作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,如果 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,所以要注意(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/
我是一名优秀的程序员,十分优秀!