groovy - groovy 中的 splat 运算符?

标签 groovy dsl

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

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

将打印

[hi:bye]

现在我有一张以前的 map ,我希望将其传递给 foo。在伪代码中,类似于:

def otherMap = [hi: "world"]
foo("bar", hi: "bye", otherMap*)

这样就可以打印了

[hi:world]

这当然行不通。

此外,尝试仅传递映射会混合参数的顺序:

def otherMap = [hi: "world"]
foo("bar", otherMap)

将打印

bar

我该如何解决这个问题?

最佳答案

您正在寻找展开 map 运算符。

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

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

def otherMap = [hi: "world"]
foo("bar", hi: "bye", *:otherMap)
foo("bar", *:otherMap, hi: "bye")

打印:

["hi":"bye"]
["hi":"world"]
["hi":"bye"]

关于groovy - groovy 中的 splat 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2942574/

相关文章:

Jenkins pipelineJob DSL 不解释管道脚本中的变量

sql - 通过 jooq DSL 插入 sys_guid 生成的值

jenkins - 将整个 Jenkins 阶段提取到共享库?

grails - 如何使用 GPars 和 Groovy 从并行运行的任务中收集数据

haskell - 在 Haskell 中建模异构图

c# - Visual Studio 可扩展性 - 自定义语言文本编辑器设置

dsl - 用于模型驱动开发的工具(最佳实践?)?

groovy - 特殊的 Groovy 魔术重新属性访问和集合/可迭代对象?

java - 我们可以将 Spock 与纯 Java 一起使用吗

jenkins - 如何在 Jenkins Groovy Post Build 插件中重用 groovy 脚本?