¿可以在他的声明中引用地图属性吗?



例如,可以做这样的事情(这失败了):

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()方法。

最新更新