带有映射的Groovy多重赋值

带有映射的Groovy多重赋值,groovy,variable-assignment,Groovy,Variable Assignment,我在为映射中的值执行多重赋值语句时遇到问题 def map = [a:1,b:2] (map.a, map.b) = [3,4] 这会引发一个异常: expecting ')', found ',' at line: 2, column: 7 但是,这样做很好: def a = 1 def b = 2 (a, b) = [3,4] 它不支持这一点 事实上,如果你作弊并使用: 哇,这是一个巧妙的解决办法。那会有用的,伊戈尔! currently only simple variables

我在为映射中的值执行多重赋值语句时遇到问题

def map = [a:1,b:2]
(map.a, map.b) = [3,4]
这会引发一个异常:

expecting ')', found ',' at line: 2, column: 7
但是,这样做很好:

def a = 1
def b = 2
(a, b) = [3,4]

它不支持这一点


事实上,如果你作弊并使用:


哇,这是一个巧妙的解决办法。那会有用的,伊戈尔!
currently only simple variables may be the target of multiple assignment expressions, e.g.if you have a person class with firstname and lastname fields, you can't currently do this:

(p.firstname, p.lastname) = "My name".split()
Map map = [a: 1, b:2]

map.with {
    (a, b) = [3, 4]
}

assert map.a == 3
assert map.b == 4