Groovy方法命名约定还是魔术?

时间:2016-04-06 19:52:20

标签: groovy dsl

我尝试创建一个小型DSL,但我正在努力解决简单的问题。 以下脚本给我一个错误。

def DEMON(String input) {
  ['a': input]
}
DEMON 'Hello thingy' a

由于某些原因,参数周围的括号不是可选的,我得到一个错误。 这个脚本运行正常:

def dEMON(String input) {
  ['a': input]
}
dEMON 'Hello thingy' a

注意:唯一的区别是小写的第一个字符。 那么这里发生了什么?为什么脚本被解释(编译?)不同?我必须遵循某种方法/类命名方案吗?

更新:错误消息。我猜一个语法错误:

unexpected token: Hello thingy @ line 4, column 7.

1 个答案:

答案 0 :(得分:2)

groovy语法有时很复杂,编译器使用一些规则来选择它必须做的事情。其中一条规则很简单:如果一个单词以大写字母开头,那么它可能是一个类。

例如,f String是groovy中有效的语法,编译器将其转换为f(String.class)

您可以使用括号来帮助理解您的DEMON不是一个类,而是一个方法,DEMON('Hello thingy', a)