我努力学习摇篮。 我喜欢的学习风格是处于较低的水平是怎么回事理解。 为此,我试图解释正在发生的事情例如6.1关于文档的DSL参考:
task hello {
doLast {
println 'Hello world!'
}
}
据我所知,这个脚本是在一个的上下文中执行Project
。 因此,我可以从看Project
文档 ,有一些超载的task(...)
方法。 望着签名,我需要选择一个具有封闭作为最后一个参数。 而且,由于我们没有传递Map
在这里,我假设被呼叫的方法是task(String name, Closure closure)
。
然而,我与挣扎的部分是如何,在这个脚本中,文字字符串hello
被映射为一个String
。
另一个例子是例如6.7 :
task taskX(dependsOn: 'taskY') << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
在这里,我想我们调用的task(Map<String, ?> args, String name)
形式的方法。 但,
- 此外,如何将文字字符串
taskX
最终成为一个String
? - 由于括号不用于构建
Map
的文字,如何在括号中的部分最终会被Map
? - 如果我正确地计算出被称为哪一种方法,都没有比DSL文档中的脚本错误的顺序给出的参数?
- 使用括号内的语法看起来所有的世界就像一个方法调用。 这可能表明代表团到
Project
对象,以解决taskX
作为一个未知的方法。 但是,据我所知,一个方法调用不会是在给定的方法调用这一点语法上有效的task
紧接它。
正如你可以看到我有点困惑,实例语法下来怎么映射到DSL参考指南,这使得它有点棘手,我真正了解发生了什么事在基层。
谢谢!