gpt4 book ai didi

groovy - 如何在 Groovy 中将所有映射值乘以一个因子?

转载 作者:行者123 更新时间:2023-12-02 05:15:42 25 4
gpt4 key购买 nike

例如,如果 map 等于:

z = ['x':1, 'y':2]

对于 f(2) 我希望它变成:

[x':2, 'y':4]

我知道可以使用 .each 循环来完成,问题是是否有更简单的方法。

谢谢

最佳答案

collectEntries函数,应用于 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] 相同,但后者更时髦、更清晰
  • 其次,collectEntries闭包的返回值必须是一个map,所以要注意
  • 第三,在map中提供动态键时,需要用括号括起来,所以需要使用(key),而不仅仅是key
  • 第四,您需要分配方法的结果,它不会就地执行。

但是,几乎可以肯定的是,将 each() 与单参数闭包一起使用会更简洁,如下所示:

def z = [x:1, y:2]
z.each{ it.value = it.value*2 }
assert z == [x:2, y:4]

这种方式的问题较少,并且它会就地修改 map ,因此您不必重新分配变量。

关于groovy - 如何在 Groovy 中将所有映射值乘以一个因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14679046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com