Groovy 常规列表扩展

Groovy 常规列表扩展,groovy,Groovy,如果运行以下Groovy代码,则断言将通过 def foo(a, b) { a + b } assert 'aaabbb' == foo(['aaa', 'bbb']) 这表明,如果使用包含X个元素的列表参数调用方法,则列表将被扩展,并调用具有X个参数的方法 当然,只有在没有使用List(或其祖先)类型的单个参数定义方法的情况下,才会发生这种情况 我只是在最近读到另一个非常棒的答案时才发现这一点。我从未在Groovy文档、发行说明或书籍中提到过它。它是一个隐藏的特性、一个bug,还是我遗

如果运行以下Groovy代码,则断言将通过

def foo(a, b) {
  a + b
}

assert 'aaabbb' == foo(['aaa', 'bbb'])
这表明,如果使用包含X个元素的列表参数调用方法,则列表将被扩展,并调用具有X个参数的方法

当然,只有在没有使用List(或其祖先)类型的单个参数定义方法的情况下,才会发生这种情况


我只是在最近读到另一个非常棒的答案时才发现这一点。我从未在Groovy文档、发行说明或书籍中提到过它。它是一个隐藏的特性、一个bug,还是我遗漏了什么?

很明显,Groovy 2中会删除它:


JT是第一个删除列表的人,Groovy用户上的每个人(有影响力的人)似乎都同意。

可能会在Groovy用户列表上得到更快的答案?@tim你可能是对的,但一旦你习惯了,邮件列表的体验是残酷的。如果我在这里没有得到答案,我会把它发布到列表中,并链接到邮件列表,这里的帖子+1很好!Groovy 2.0将破坏很多东西(但修复了更多)+1个出色的侦探工作。任何使用这些功能的人都应该破坏他们的代码:)这个线程非常有趣,如果你继续读下去,它会变成一个被劫持的we-want-x-y-z for 2.0线程;)我同意groovy用户与groovy相比有点痛苦,但就了解groovy.lang的发展方向而言,这是一个好消息。这种有益的改变是我避免使用groovy的另一个原因。我以为Groovy++会变成Groovy 2.0。。。我错了吗?