在groovy中的splat运算符?

Itt*_*ayD 3 dsl groovy

def foo(map, name) {
  println(map)
}

foo("bar", hi: "bye")
Run Code Online (Sandbox Code Playgroud)

将打印

[hi:bye]
Run Code Online (Sandbox Code Playgroud)

现在我有一张我希望传递给foo的先前地图.在伪代码中,类似于:

def otherMap = [hi: "world"]
foo("bar", hi: "bye", otherMap*)
Run Code Online (Sandbox Code Playgroud)

所以它打印

[hi:world]
Run Code Online (Sandbox Code Playgroud)

这当然不起作用.

此外,尝试仅传递地图混合参数的顺序:

def otherMap = [hi: "world"]
foo("bar", otherMap)
Run Code Online (Sandbox Code Playgroud)

将打印

bar
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Joh*_*ham 7

您正在寻找传播地图运算符.

def foo(map, name) {
  println(map)
}

foo("bar", hi: "bye")

def otherMap = [hi: "world"]
foo("bar", hi: "bye", *:otherMap)
foo("bar", *:otherMap, hi: "bye")
Run Code Online (Sandbox Code Playgroud)

打印:

["hi":"bye"]
["hi":"world"]
["hi":"bye"]
Run Code Online (Sandbox Code Playgroud)