Groovy語法基礎(chǔ)三

上接Groovy語法基礎(chǔ)二

六、閉包

??????? 閉包,英文叫Closure,是Groovy中非常重要的一個數(shù)據(jù)類型或者說一種概念 。閉包是指可以包含自由(未綁定到特定對象)變量的代碼塊;這些變量不是在這個代碼塊內(nèi)或者任何全局上下文中定義的,而是在定義代碼塊的環(huán)境中定義(局部變量)。“閉包”一詞來源于以下兩者的結(jié)合:要執(zhí)行的代碼塊(由于自由變量被包含在代碼塊中,這些自由變量以及它們引用的對象沒有被釋放)和為自由變量提供綁定的計算環(huán)境(作用域)。

??????? 1、Groovy閉包代碼定義格式

def c= {paramters -> code}

??????? 或者

def c= {無參數(shù),純code}? //這種case不需要->符號

???????? 2、定義代碼

/*閉包*/

def aClosure = {

//閉包是一段代碼,所以需要用花括號括起來..

String param1,intparam2 ->//這個箭頭很關(guān)鍵。箭頭前面是參數(shù)定義,箭頭后面是代碼

println"this is code"http://這是代碼,最后一句是返回值,也可以使用return,和Groovy中普通函數(shù)一樣

}

??????? 3、閉包定義好后,要調(diào)用它的方法就是:

??????? a、 閉包對象.call(參數(shù))? 或者更像函數(shù)指針調(diào)用的方法

aClosure.call("this is string",100)

??????? b、閉包對象(參數(shù))

aClosure("this is string",100)

??????? 結(jié)果都是

this is code

???????? 需要注意:

??????? 如果閉包沒定義參數(shù)的話,則隱含有一個參數(shù),這個參數(shù)名字叫it,和this的作用類似。it代表閉包的參數(shù)。比如:

def greeting = {"Hello,$it!"}

assert greeting('Patrick') =='Hello, Patrick!'

等同于

def greeting = { it ->"Hello,$it!"}

assert greeting('Patrick') =='Hello, Patrick!'

??????? 結(jié)果:

Process finished with exit code 0

??????? 與此同時:

??????? 如果在閉包定義時,采用下面這種寫法,則表示閉包沒有參數(shù)

def noParamClosure= { ->true}//noParamClosure("test")? <==報錯喔!

println(noParamClosure())//雖然沒有返回值,小括號必須有,否則打印Syntax$_main_closure3@6e9c45d0

??????? 結(jié)果:

true

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,525評論 19 139
  • Groovy :是一種動態(tài)語言。 1:這種語言比較有特點,它和 Java 一樣,也運行于 Java 虛擬機中。簡單...
    PeytonWu閱讀 1,674評論 0 1
  • 參考:深入理解Android之Gradle Groovy與Java的區(qū)別Groovy語法Groovy基礎(chǔ)——Clo...
    蒸汽飛船閱讀 4,858評論 0 2
  • 介紹 Gradle 是android studio帶的一款構(gòu)建工具,方便、實用,一大堆的好話就不說了。如果要熟練使...
    JeremyDai閱讀 526評論 0 0
  • 什么是 Groovy? 簡言之,Groovy是一種基于JVM(Java虛擬機)的敏捷動態(tài)開發(fā)語言。它是一種成熟的面...
    北緯26閱讀 4,268評論 0 14

友情鏈接更多精彩內(nèi)容