1. 程式人生 > >Gradle基礎知識——Groovy的閉包

Gradle基礎知識——Groovy的閉包

點選圖片領取阿里云云產品幸運券

  • 定義閉包
def closure_name = {
    // closure body
}

上面程式碼定義一個名為 closure_name 的閉包,用途由 closure body 中的程式碼定義。匿名閉包指不宣告閉包變數名,只有閉包方法體{ //closure body }

  • 無參閉包
def closure_with_no_param = {
    println 'hello,world!'
}

執行closure_with_no_param()或者closure_with_no_param.call(),將輸出hello,world!

  • 含參閉包
def
closure_with_param = { x,y-> println "x plus y is " + (x+y) }

執行closure_with_param(1,2),結果為x plus y is 3!

可以設定預設引數值,例如:

def closure_with_param = {
    x,y=0-> println "x plus y is " + (x+y)
}

執行closure_with_param(1),結果為x plus y is 1!

  • 與方法/函式的結合使用

定義閉包

def closure_demo = {
    x -> println x
}

定義方法

def method_name(Closure closure_name){
    for(int i=0;i<=100;i+=1){
        closure_name(i)
    }
}

執行method_name(closure_demo)或者method_name closure_demo,結果輸出如下:

1
2
3
...
100
  • Gradle構建指令碼簡析
dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+' }

其中:

  • dependencies為方法或函式名,引數為閉包型別
  • 接下來的{...}是一個閉包
//這是個閉包
{
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}
  • group: 'commons-collections'group變數的值設為commons-collections
  • compile為方法/函式

參考文獻

點選圖片領取阿里云云產品幸運券