Gradle自動化構建 三 Groovy 閉包

2021-08-26 15:12:18 字數 1921 閱讀 8808

###閉包與字串

string str = 『2 + 3 = 5,abc』

println str.each

println str.find 

def list = str.findall

println list.toliststring() // [2, 3, 5]

println str.any // true , any 只要符合條件就返回true,否則返回false

println str.every // false , every 表示str中每個字元都要滿足條件返回true,否則返回false

// [2, , +, , 3, , =, , 5, ,, a, b, c] , collect 對字串中每個字元進行閉包中的處理,返回處理後字元組成的集合list

println str.collect .toliststring()

###閉包more

// 閉包關鍵變數 this 、 owner 、 delegate 都是指向其最近的類

def closure =

closure.call()

class person 

def static say()

classclosure.call()

}def cc =

def nostatic()

classclosure.call()

}}person.classclosure.call() // 呼叫內部類中的靜態成員閉包

person.say() // 呼叫內部類中的靜態函式

person per = new person()

per.cc.call() // 非靜態成員 呼叫

per.nostatic()

def outclosure =

innerclosure.delegate = per // 修改innerclosure閉包的delegate物件,指向person例項物件

innerclosure.call()

}outclosure.call()

// 在一般情況下,閉包的 this owner delegate 值都一樣

// 在閉包的閉包中, this 與 owner 值不一樣,owner 與 delegate 的值一樣 , 如果修改了delegate值, owner 就與 delegate 值不一樣了

// 閉包的 this 、 owner 的值是不能被修改的

// 閉包委託策略

class student

}class teacher

def stu = new student(name: 'hj') // new乙個物件,並給name成員賦值

def tea = new teacher(name: 'some')

println stu.pretty.call() // my name is hj

stu.pretty.delegate = tea

println stu.pretty.call() // my name is hj

stu.pretty.resolvestrategy = closure.delegate_only // 修改閉包的委託策略(需要這兩行**一起作用才行),預設值為 closure.owner_first

// 當修改的閉包的委託策略為 delegate_first,如果在teacher物件中沒有與student物件的pretty閉包中的name變數一致的變數,那麼pretty.call()時還是會取student物件中的name的值

// 當修改的閉包的委託策略為 delegate_only,如果teacher物件中沒有name成員,那麼程式會報錯

println stu.pretty.call() // my name is some

Gradle自動化構建 十 Task

jge tfor matt ime hjen dtim e 用 時 用時 hjgetf orma ttim e hj endt ime 用時 決定task執行順序 dependson強依賴方式 通過task輸入輸出指定 通過api指定執行順序 轉換.dot到task時序圖 graphviz depe...

Gulp 自動化構建

use gulp 官網 編譯 sass 合併優化壓縮 css 校驗壓縮 js 優化新增檔案指紋 md5 元件化頭部底部 include html 實時自動重新整理 gulp是前端開發過程中對 進行自動化構建的利器。它不僅能對資源進行優化,而且在開發過程中能夠通過配置自動完成很多重複的任務,讓我們可以...

自動化構建Jenkins fastlane

參考 自動化查詢描述檔案 安裝之前 對應的uuid 參考鏈結 檢視簽名檔案,teamid 描述檔案路徑 相互關係 命令列提示沒有登入 jenkins的工作區目錄 jenkins環境配置 同道中人 shell 報錯倉庫位址 配的那個token不是用來登入git倉庫的原始碼管理的憑據和 api的憑據不是...