2014-09-21 60 views
2

我在摇篮只是新手,虽然我读我整个​​follwoing代码示例附带的摇篮手册:Gradle 4.times。美元是什么?

task count << { 
    4.times { print "$it " } 
} 

它打印1 2 3 4。为什么?什么是$it,为什么如果我们更换$it为 “一”,我们将获得

a a a a 

而且

task count << { 
    print "$it " 
    print "$it " 
    print "$it " 
    print "$it " 
} 

使输出task ':count' task ':count' task ':count' task ':count'

回答

2

做甚至不勉强知道的gradle什么是,但似乎$it迭代器的简称。当您说4.times (token)时,您正在执行(token)四次,每次都会将$it绑定到当前迭代。

同样,我几乎不知道Gradle是什么,但在第二个示例中,$it似乎在迭代给定的构建任务。当前的任务是count,因此它会打印该任务的字符串表示形式。没有隐式循环,那个词法范围中就没有更具体的迭代器。

+0

嗯......但是如果我只写print $ 4次,我会收到'task':count'task':count'task':count'task':count''。 – 2014-09-21 14:02:18

+0

您可以将其扩展为一个完整的示例并将其编辑为原始问题吗?我的猜测是,这只是我所说的泛化 - 迭代给定的构建任务 – 2014-09-21 14:03:09

+0

当然,我已经更新了Q. – 2014-09-21 14:04:48

2

所谓隐式参数$it在上述评论的链接,文档的Groovy后讨论的,具体这里:Implicit parameter。它是闭包,除非有明确的空参数列表。

实施例与$it

def greeting = { "Hello, $it!" } 
assert greeting('Patrick') == 'Hello, Patrick!' 

而不$it

def magicNumber = { -> 42 } 

// this call will fail because the closure doesn't accept any argument 
magicNumber(11) 
+0

(示例来自链接) – ronaldw 2016-02-24 21:30:59

相关问题