0

在阅读 Gradle 插件教程时,我发现了以下代码:

apply plugin: GreetingPlugin

greeting.message = 'Hi from Gradle'

class GreetingPlugin implements Plugin<Project> {
    void apply(Project project) {
        // Add the 'greeting' extension object
        project.extensions.create("greeting", GreetingPluginExtension)
        // Add a task that uses the configuration
        project.task('hello') << {
            println project.greeting.message
        }
    }
}

class GreetingPluginExtension {
    def String message = 'Hello from GreetingPlugin'
}

我的理解是该行def String message = 'Hello from GreetingPlugin'声明了两种类型(通用def类型和特定String类型)。删除任何一种类型似乎都允许脚本继续执行。

Groovy 允许为单个变量进行两种类型声明有什么原因吗?如果是这样,此语言功能的用例是什么?它在这种情况下是否有特定用途?

4

2 回答 2

3

线

def String message = 'Hello from GreetingPlugin'

是错的。在这种情况下,这def是浪费角色,因为它没有做任何事情

那条线是一样的

String message = 'Hello from GreetingPlugin'

请参阅此页面中的Def and type部分

于 2013-08-15T21:15:19.060 回答
1

def当您不关心将变量限制为特定类型时使用,例如,如果变量需要在运行时支持不同的类型。否则,您可以省略def并指定类型。两者都使用没有任何好处。

在此处阅读语义:http: //groovy.codehaus.org/Scoping+and+the+Semantics+of+%22def%22

于 2013-08-15T21:17:07.100 回答