我遇到了在Groovy閉包的owner
的概念,它搞糊塗了,會發生什麼,所以我寫了一個小程序,以找出如何owner
作品:Groovy的:當一個封閉的「主人」是另一種閉合
def examineClosure(closure) {
closure()
}
examineClosure() {
println "$owner"
examineClosure() {
println "$owner"
}
}
當我運行這段代碼,不過,我有一個java.lang.StackOverflowError
,我以爲是因爲當$owner
在內部封閉進行評估的,Groovy實際上是對外部封閉執行.call()
含蓄。這是預期的行爲?爲"some var: " + var
變量'this','owner'和'delegate'被隱式定義在Groovy中任何閉包的範圍內:http://groovy-lang.org/closures.html#closure-owner –
但是行:println「」+所有者意味着所有者是一個字符串或實現toString()方法,因此它可以被打印到屏幕上。而且在代碼中看不到任何實現。當你有一個比它可以打印。 – Rotem