我有一个扩展 Expando 并注入动态属性的类。
class Dynamo extends Expando {
}
Dynamo dynamic = [ firstName: 'bob', lastName: 'dobbs' ]
我想创建一个动态属性fullName评估为"$lastName, $firstName"。
虽然它确实可以做到这一点:
dynamic.fullName = { "$lastName, $fullName" }
它需要一个 call() 或隐式调用 with () 来返回字符串,否则它只是给出闭包 toString()
assert dynamic.fullName() == 'dobbs, bob'
通行证
但
assert dynamic.fullName == 'dobbs, bob'
失败,因为计算结果为闭包的 toString
我总能做到这一点
Dynamo dynamic = [ firstName: 'bob', lastName: 'dobbs', fullName: 'dobbs, bob' ]
但这并不干燥......