Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy函数没有括号和以大写字母开头的参数,导致错误_Groovy - Fatal编程技术网

Groovy函数没有括号和以大写字母开头的参数,导致错误

Groovy函数没有括号和以大写字母开头的参数,导致错误,groovy,Groovy,我有一个类,它包含一个成分列表,并提供一个函数服务,现在可以打印这些成分 class CookDSL { List<String> ingredientsToCook CookDSL(List<String> ingredients){ ingredientsToCook=ingredients } void SERVE(Closure closure){closure(ingredientsToCook)} } 输出: [X, Y, Z]

我有一个类,它包含一个成分列表,并提供一个函数服务,现在可以打印这些成分

class CookDSL {
  List<String> ingredientsToCook

  CookDSL(List<String> ingredients){
     ingredientsToCook=ingredients
  }

  void SERVE(Closure closure){closure(ingredientsToCook)}
}
输出:

[X, Y, Z]
startup failed:
Script1.groovy: 16: unexpected token: Ingredients @ line 18, column 10.
   COOK Ingredients SERVE {it-> println(it)}
        ^

1 error
[X, Y, Z]
为了保持上述DSL的一致性,我尝试将配料命名为配料,Groovy不喜欢

def Ingredients = ["X", "Y", "Z"]
COOK Ingredients SERVE {it-> println(it)}
输出:

[X, Y, Z]
startup failed:
Script1.groovy: 16: unexpected token: Ingredients @ line 18, column 10.
   COOK Ingredients SERVE {it-> println(it)}
        ^

1 error
[X, Y, Z]
如果配料变量用括号括起来,则效果良好:

def Ingredients = ["X", "Y", "Z"]
COOK(Ingredients) SERVE {it-> println(it)}
输出:

[X, Y, Z]
startup failed:
Script1.groovy: 16: unexpected token: Ingredients @ line 18, column 10.
   COOK Ingredients SERVE {it-> println(it)}
        ^

1 error
[X, Y, Z]
不确定我是否做错了什么,或者Groovy在某些情况下是否限制使用以大写字母开头的变量


Groovy版本:2.3.8

正如@tim_yates所说的,大写字母可能会让解析器感到困惑,可能它会将它们理解为类标识符。我通常看起来像


类以大写字母开头,变量不应以大写字母开头