本篇文章討論下面這一小段Gradle腳本:
repositories {
mavenCentral()
}
閉包字面量
閉包字面量看起來像Java裏的代碼塊:用一對兒花括號包起來。前面討論過,方法調用的圓括號可以省略,補上圓括號之後,腳本看起來是這樣:
repositories({ // <--
mavenCentral()
})
如果閉包是方法的最後一個參數,那麼閉包可以放在圓括號外面
也就是說,上面的代碼寫成這樣也是可以的:
repositories() { // <--
mavenCentral()
}
結論
文章開頭的腳本實際上是調用repositories方法,並且把一個閉包當做參數傳入,有Javadoc爲證。
舉一反三
下面這段腳本定義了一個Task,並且給它定義了一個Action,打印出一句話:
task 'myTask' {
doLast {
println 'hello world!'
}
}
下面是補上括號之後的腳本:
task('myTask', {
doLast({
println('hello world!')
})
})
task方法簽名在這裏。