实际上这是一个更普遍的问题。 我正在为我的gradle项目编写一个自定义插件,它引入了一个新任务。由于这是一项非常简单的任务,我不想编写新的任务类。因此我使用方法"任务"从项目中创建它:
project.task('myTask', dependsOn: 'build') << {
println 'Here I come!'
}
现在我很困惑这个方法调用的具体参数列表是什么样的。肠道,我认为它是task(String, Map, Closure)
。但实际上没有方法超载这个签名。只有一种方法task(Map, String, Closure)
。
groovy真的重新排列了实际参数,还是我错过了什么?
答案 0 :(得分:1)
使用的重载是task(Map, String)
。 (<<
是Task
上的重载运算符,用作Task#doLast
的简写。)Groovy编译器将命名参数移植到第一个参数映射中。