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的闭包定义。 –