例如,可以做这样的事情(这失败了):
def map = [ property: 1,
propertyPlusOne: map.property + 1]
当然,这样做是可能的:
def map = [:]
map.property = 1
map.propertyPlusOne = map.property + 1
但都在宣言中?
您可以使用with
声明:
def map = [ : ].with {
property = 1
propertyPlusOne = property + 1
it
}
assert map.propertyPlusOne == 2
虽然像 ruby's tap
(或 @timyates' 扩展)之类的东西稍微干净一些:
def map = [ : ].tap {
property = 1
propertyPlusOne = property + 1
}
assert map.propertyPlusOne == 2
一般不会。
您必须先定义并初始化 map
var,以便能够设置值:
def map = [ property: 1 ]
map += [ propertyPlusOne: map.property + 1]
我不确定你在做什么,但可能值得检查withDefault()
方法。