2013-08-06 2 views
2

변수를 선언하지 않고 변수를 사용할 때 Eclipse에서 오류가 표시되는 이유는 무엇입니까?선언없이 Groovy 참조 변수

enter image description here

편집 :

AFAIK 동적 특성은 변수의 유형이 런타임 때까지 알 수없는 의미합니다. 변수는 사용되기 전에 (명시 적으로 또는 내재적으로) 정의되어야합니다. 예를 들어 - 동적 언어 인 Python은 이것을 오류로보고합니다.

enter image description here

Edit2가 : 여전히 오류되지 않도록 어떻게 끝내이 코드를 해석 하는가? 때문에 그루비 같은 동적 언어의

enter image description here

답변

4

은, 하나는 methodMissing()/propertyMissing()을 구현 할 수있다. 따라서 변수 나 메소드가 실제로 존재하지는 않지만 실제로 프로그램이 실행되기 전에는 오류가 아닐 수도 있습니다. 이러한 오류는 일반적으로 런타임에만 감지 할 수 있으므로 IDE는 일반적으로 불만을 제기하지 않습니다.

당신을 암시하기는하지만, 이클립스는 정적으로 참조 할 수없는 변수들을 밑줄 치고 있습니다.

편집 :

바로 아래의 방법 테스트를 확인, 코드 예제로 개념을 설명합니다. 이제 IDE는 something, that ...이 클래스의 메소드가 될 수 있다는 것을 알 수 없습니다.

이것은 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() 
+0

@KshitizSharma 네, 로컬 변수는 (metaClass를 통해) 또는 propertyMissing을 통해 추가 할 수 있습니다. kunal은 –

+0

@tim_yates라고 말합니다. 편집 한 내용에 댓글을 달 수 있습니까? –

+0

@KshitizSharma 포인트를 설명하는 코드 예제를 추가했습니다. – kunal

2

@CompileStatic 태그를 메서드에 사용하려고 할 수 있습니다. 그러면 Eclipse는 컴파일시 또는 개발시에 오류를 컴파일하고 점검합니다.

Eclipse를 아직 확인하지 않았으므로 이는 단지 제안을위한 것입니다.