1
這是一個命令模式來編寫詹金斯管道這樣的代碼:爲什麼jenkinsfile以這種方式使用閉包?
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
}
我不知道怎樣來寫這個簡單,但這種封閉得到隱含的進口,並且可以通過.groovy
文件的文件名被稱爲它生活在
我這樣稱呼它:
MyClosure { myarg = 'sdfsdf' }
我不能完全肯定這是什麼做的。這是做call(body)
,然後分配body
作爲代表。所以這意味着我通過它的關閉是代表,但是不僅僅是主人?華?我困惑。
如果我沒有將代理切換到配置會怎樣?身體將是代表?如果是這種情況,我將無法訪問傳入的myarg? – red888
對。 'body'是一個指向匿名函數的變量。如果你沒有改變委託,那麼myarg會在該函數的範圍內被設置爲'sdfsdf',並且只要該函數退出,該值就消失了。但是,如果您委託給地圖對象,它將在該對象上設置屬性,您現在可以獲取該屬性。 –
其實身體不指向一個功能。這是關閉的一個實例。 – Opal