在阅读本书的过程中,我碰到了这条线
Groovy自动公开一个名为它的隐式变量以指示 循环迭代索引。
摘自Gradle in Action,第2章清单2.1
该行说$ it代表循环迭代索引。但是当我尝试添加
$it
到任务yayGradle0 / 1/2的println语句,它打印出任务而不是索引。我对此行为感到困惑。请指导。
3.times{
task "yayGradle$it" <<{
println 'Gradle rocks--->>>'+"$it"
}
}
运行任务yayGradle0后的输出为:
Gradle rocks--->>>task ':yayGradle0'
答案 0 :(得分:1)
(重读后编辑)
it
是循环索引。
从groovy shell中
3.times {
println "${it}"
}
0
1
2
在您的代码中还有另一个闭包,它变为该闭包的变量(即任务名称)
下面的示例在顶层使用显式变量。
3.times{ counter->
task "hello${counter}" <<{
println 'Gradle rocks--->>>'+" ${it} ${counter}"
}
}
$ gradle hello2得到以下输出。
任务:hello2 摇篮石--- >>>任务':hello2'2
引用
答案 1 :(得分:1)
您在与presented in the book不同的上下文中使用it
变量。在您的情况下,您正在任务Closure
的上下文中工作。因此,it
代表一个不同的对象,一个org.gradle.api.Task
实例。引用Closure delegation strategies会很有帮助。另请参见Appendix B in the book。