1
我有下面的代碼片段在我Demo.groovy文件的Groovy閉包DELEGATE_ONLY和DELEGATE_FIRST策略不工作
class Person {
String name
}
def name='no name'
def p = new Person(name:'Igor')
def cl = { name.toUpperCase() }
cl.resolveStrategy = Closure.DELEGATE_ONLY
cl.delegate = p
println cl()
據對關閉策略Groovy的文檔http://groovy-lang.org/closures.html
我期待下面的輸出
IGOR
但是代碼似乎打印
NO NAME
任何人可以幫助我瞭解爲什麼常規打印NO NAME,而不是用IGOR決心策略設置爲DELEGATE_ONLY?
H1可以請你讓我知道是什麼意思的「一個屬性進行訪問而無需顯式地設置一個接收器對象」和我在哪裏設置屬性名稱的接收器對象。 –
@RameshKP對不起,我不能。這很簡單,我的解釋和測試的結果。如果在關閉定義時沒有定義'name',它將按預期工作。但是這個網站上有很多Groovy專家,所以希望這能夠得到解決。 –
其實你是對的:)謝謝你其實def的名字應該是down的閉包定義。 –