【问题标题】:Why does case matter in gradle task method names?为什么大小写在 gradle 任务方法名称中很重要?
【发布时间】:2016-02-10 23:37:14
【问题描述】:

this question 中我很困惑,因为我认为我们可以将参数传递给不带括号的方法。实际上,您可以将参数作为逗号分隔列表传递给如下方法:

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,底层是 Java,所以它仍然区分大小写。

标签: gradle groovy build.gradle


【解决方案1】:

这只是 Groovy 编译器将任何大写符号视为类引用,而不是方法。这里有一个歧义,您可以通过以下任一方式解决:

  • 使用括号Foo('one', 'two')

  • 限定方法名称this.Foo 'one', 'two'

一般来说,惯例是类大写,方法不大写。因为 Groovy 是一种动态语言,所以编译器非常依赖这些约定。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 2016-10-06
相关资源
最近更新 更多