例如,如果地图等于:
z = ['x':1, 'y':2]
对于 f(2) 我希望它变成:
[x':2, 'y':4]
我知道可以使用 .each 循环来完成,问题是是否有更简单的方法。
谢谢
例如,如果地图等于:
z = ['x':1, 'y':2]
对于 f(2) 我希望它变成:
[x':2, 'y':4]
我知道可以使用 .each 循环来完成,问题是是否有更简单的方法。
谢谢
有一个collectEntries
函数,它应用于 a 中的所有键和值Map
,并返回一个带有更新值的新函数: Map
def z = [x:1, y:2]
z = z.collectEntries{ key, value -> [(key): value*2] }
assert z == [x:2, y:4]
这里有几点注意事项:
['z':1]
与 相同[z:1]
,但后者更 groovier 和更易读collectEntries
闭包的返回值必须是一个map,所以要小心那里(key)
,而不仅仅是key
但是,几乎可以肯定,each()
与单参数闭包一起使用会更干净,如下所示:
def z = [x:1, y:2]
z.each{ it.value = it.value*2 }
assert z == [x:2, y:4]
这种方式的问题较少,并且它会就地修改地图,因此您不必重新分配变量。