Groovy 什么';s操作员<&书信电报;(双倍小于)在格拉德尔?

Groovy 什么';s操作员<&书信电报;(双倍小于)在格拉德尔?,groovy,gradle,Groovy,Gradle,以下代码定义了4个渐变任务: 4.times { counter -> task "task$counter" << { println "I'm task number $counter" } } 4.times{counter-> 任务“任务$counter”基本上这是一个leftShift操作符-您可以找到更多详细信息 在gradle中,gradle中的操作符被重载以将任务添加到操作中,对吗?任务在groovy中只是一个闭包,是吗?是的,

以下代码定义了4个渐变任务:

4.times { counter ->
    task "task$counter" << {
        println "I'm task number $counter"
    }
}
4.times{counter->

任务“任务$counter”基本上这是一个
leftShift
操作符-您可以找到更多详细信息


在gradle
中,gradle中的
操作符被重载以将任务添加到操作中,对吗?任务在groovy中只是一个闭包,是吗?是的,它在这个类中被重载了:
org.gradle.api.internal.AbstractTask
。当涉及到第二个问题时,并不完全如此。任务始终是
DefaultTask的实例
class(或扩展
DefaultTask
(它可以定义为一种闭包,但不一定如此)。它是非常旧的源文件。它在这里重载:
public Task leftShift(closure action){return doLast(action);}
它是java,但gradle的DSL与groovy一起使用。您可以调用
doLast()
leftShift()
方法,而不是使用
我已经理解了。谢谢。这个评论节省了我的时间!很好的解释@heeneee在第二种情况下,4次打印
我是任务编号N
是在每个运行的任务中完成的。不仅仅是
taskN
s。
4.times { counter ->
    task "task$counter" << {
        println "I'm task number $counter"
    }
}
4.times { counter ->
    task "task$counter" {
        println "I'm task number $counter"
    }
}