Groovy 方法命名约定用于定义我们自己的 DSL

问题描述 投票:0回答:1

我尝试创建一个小型 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.
groovy dsl
1个回答
3
投票

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

例如,

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

你可以使用括号来帮助groovy理解你的

DEMON
不是一个类而是一个方法,
DEMON('Hello thingy', a)

© www.soinside.com 2019 - 2024. All rights reserved.