为什么案例在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世界的现状”——他向我指出:虽然现在已经过时了,解释“规则”。