为什么案例在gradle任务方法名称中很重要?
实际上,我很困惑,因为我认为我们可以将参数传递给没有括号的方法。实际上,您可以将参数作为逗号分隔的列表传递给如下方法:为什么案例在gradle任务方法名称中很重要?,gradle,groovy,build.gradle,Gradle,Groovy,Build.gradle,实际上,我很困惑,因为我认为我们可以将参数传递给没有括号的方法。实际上,您可以将参数作为逗号分隔的列表传递给如下方法: task ListOfStrings(type: ExampleTask) { //TheList 'one', 'two', 'three' // doesn't work theList 'one', 'two', 'three' } public class ExampleTask extends DefaultTask { //public vo
task ListOfStrings(type: ExampleTask) {
//TheList 'one', 'two', 'three' // doesn't work
theList 'one', 'two', 'three'
}
public class ExampleTask extends DefaultTask {
//public void TheList(Object... theStrings) {
// theStrings.each { println it }
//}
public void theList(Object... theStrings) {
theStrings.each { println it }
}
}
上面的代码有效,因为方法名称是camelCase。当使用的方法名为TitleCase(上面注释掉)时,gradle抛出一个错误:
build file '/tmp/build.gradle': 16: unexpected token: one @ line 16, column 13.
TheList 'one', 'two', 'three'
^
因此,问题是,“为什么方法名称的大小写很重要?”
概括地说,是什么导致了这种行为?这是一个惯例吗?如果是这样的话,它记录在哪里?这只是Groovy编译器将任何大写符号视为类引用,而不是方法。这里有一个不明确的地方,您可以通过以下方式解决:
- 使用括号
Foo('one','two')
- 限定方法名
this.Foo'one'、'two'
一般来说,惯例是类大写,方法不大写。因为Groovy是一种动态语言,编译器严重依赖于这些约定。Groovy的底层是Java,所以它仍然区分大小写。我的朋友是一位Java老手,就在几天前告诉我,方法的低级化是“Java世界的现状”——他向我指出:虽然现在已经过时了,解释“规则”。