在Groovy映射中更新具有相同值的所有对象字段

Ren*_*uez 1 groovy

我在Groovy中有一个Object,如:

class Person {
  def name
  def age
}
Run Code Online (Sandbox Code Playgroud)

以及存储在地图中的人员集合:

Person a = new Person(name: 'A', age:29)
Person b = new Person(name: 'B', age:15)

Map persons = ['1':a, '2':b]
Run Code Online (Sandbox Code Playgroud)

我正在尝试为所有人更新年龄字段,我知道我可以做以下事情:

persons.each{ k,v -> v.age=0 }
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有另一种方法可以在不迭代整个地图的情况下完成它.如您所见,所有人都应具有相同的价值

cfr*_*ick 5

您可以使用扩展运算符:

persons.values()*.age = 0
Run Code Online (Sandbox Code Playgroud)