使用地图进行Groovy多重赋值

Dav*_*yer 6 groovy variable-assignment

我在为地图中的值执行多重赋值语句时遇到问题.

def map = [a:1,b:2]
(map.a, map.b) = [3,4]
Run Code Online (Sandbox Code Playgroud)

这引发了一个异常:

expecting ')', found ',' at line: 2, column: 7
Run Code Online (Sandbox Code Playgroud)

但是,这很好用:

def a = 1
def b = 2
(a, b) = [3,4]
Run Code Online (Sandbox Code Playgroud)

Igo*_*gor 9

实际上,如果你作弊和使用,你可以这样做.with:

Map map = [a: 1, b:2]

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

assert map.a == 3
assert map.b == 4
Run Code Online (Sandbox Code Playgroud)

  • 哇,这是一个光滑的解决方法.这会奏效,伊戈尔! (2认同)

eva*_*ong 5

它不支持那个。

http://groovy.codehaus.org/Multiple+Assignment

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()
Run Code Online (Sandbox Code Playgroud)