仅当您不需要返回值时,为什么在Groovy中括号是可选的?

时间:2011-02-21 01:26:13

标签: groovy language-design

例如:

groovy:000> Arrays.asList 1,2,3,4,5
===> [1, 2, 3, 4, 5]

有效,因为不需要该值。

但是当返回值分配给变量时:

groovy:000> a = Arrays.asList 1,2,3,4,5
ERROR org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, groovysh_parse: 1: unexpected token: 1 @ line 1, column 19.
   a = Arrays.asList 1,2,3,4,5
                     ^

1 error

        at java_lang_Runnable$run.call (Unknown Source)

失败。

要使它运行,你需要括号。

groovy:000> a = Arrays.asList( 1,2,3,4,5)
===> [1, 2, 3, 4, 5]

这背后有设计理由吗?或者它只是实施的方式?

2 个答案:

答案 0 :(得分:3)

我不知道历史上的答案,但请注意:

您的示例应与Groovy 1.8 beta3 +一起使用

答案 1 :(得分:1)

因为如果没有它们,您将无法将方法调用链接到返回值。 (如果你要链接到单个参数或返回值,那将是不明确的。)