Groovy函数调用省略括号

时间:2015-01-09 09:27:16

标签: groovy gradle

根据gradle documentation/section 13.5.2,我们可以省略方法调用中的括号:

  

括号是方法调用的可选项。

但是当我们尝试应用java插件时它似乎不起作用。如果脚本包含以下行:

apply [plugin: 'java']

我们会收到错误:

 Maybe something should be set in parentheses or a comma is missing?
 @ line 1, column 8.
     apply [plugin: 'java']
            ^

但如果我们将这个Map - 字面放入括号中,它就可以正常工作。

apply([plugin: 'java'])

所以当参数是Map时我们不能省略括号,我们可以吗?

1 个答案:

答案 0 :(得分:7)

正如规范所述,当没有歧义 时,可以省略括号 。我怀疑这种情况下的含糊不清是因为没有括号的语句看起来很像数组索引语法,并且解析器无法确定您是否正在调用名为“apply”的方法或尝试使用名为“apply”的数组执行某些操作。

就个人而言,这就是我倾向于总是使用括号的原因 - 如果解析器无法解决问题,我确信另一个程序员也不会读取代码。