的Groovy闭包DELEGATE_ONLY和DELEGATE_FIRST策略不工作
我有下面的代码片段在我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?
回答:
文档说:
无论何时,在一个封闭,一个属性没有明确设置一个接收器对象访问,然后一个代表团策略参与
这是不是在情况下,你例如,定义变量name
。删除它,或者closere的定义后移动它,你会看到预期的结果
class Person { String name
}
def p = new Person(name:'Igor')
def cl = { name.toUpperCase() }
def name='no name'
cl.resolveStrategy = Closure.DELEGATE_ONLY
cl.delegate = p
println cl()
IGOR
以上是 的Groovy闭包DELEGATE_ONLY和DELEGATE_FIRST策略不工作 的全部内容, 来源链接: utcz.com/qa/265905.html