1. 程式人生 > >看懂Gradle指令碼(2)- Groovy語言的閉包語法

看懂Gradle指令碼(2)- Groovy語言的閉包語法

本篇文章討論下面這一小段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方法簽名在這裡