Groovy引用变量而不声明

时间:2013-08-06 06:00:17

标签: eclipse groovy

为什么在没有声明变量的情况下使用变量时eclipse不显示错误?

enter image description here

修改

AFAIK动态特性仅表示在运行时才知道变量类型。在使用之前,仍然必须(显式或隐式)定义变量。例如,Python也是一种动态语言,将其报告为错误。

enter image description here

EDIT2: groovy如何解释这段代码,使它仍然不是错误?

enter image description here

2 个答案:

答案 0 :(得分:4)

因为在像groovy这样的动态语言中,可以实现methodMissing() / propertyMissing()。因此,虽然这种变量或方法实际上并不存在,但在程序实际运行之前,它可能仍然不是错误。这些错误通常只能在运行时检测到,因此IDE通常不会抱怨它。

虽然提示你,eclipse正在强调那些无法静态引用的变量。

编辑:

要通过代码示例解释概念,只需检查下面的方法测试。现在IDE无法知道somethingthat ...实际上可以是此类中的方法。

这极大地有助于在groovy中构建DSL。

class TestClass {
    def test() {
        def a = something.that.didnt.exist()
        or how about some random statements that make no sense at all
        a = ew Parser().doSomething() ew blah blah blah 
    }
     def propertyMissing(String name) { println "$name"; return this }
     def methodMissing(String name, args) { println "$name with $args"; return this  }
}

new TestClass().test()

答案 1 :(得分:2)

我认为您可能会尝试在方法上使用@CompileStatic标记。 然后Eclipse将在编译时或开发时编译和检查错误。

我现在没有Eclipse来检查这个,所以这只是一个提案。