저는 초보 프로그래머입니다. 정적 컴파일 (@CompileStatic
annotation)을 사용하여 switch-case-break 명령문의 이상한 동작에 직면했습니다. break
은 무시됩니다.
문서를 읽는 동안 버그가 있거나 뭔가를 놓쳤습니다.Groovy 2.1.0 @CompileStatic을 사용하는 switch-case-break 문의 이상한 동작
환경 :
- groovy sdk 2.1.0
- Oracle JDK build 1.7.0_13-b20 on Mac OS X Lion 10.7.5
테스트 케이스 :
import groovy.transform.CompileStatic
@CompileStatic
class Test {
def test() {
['A', 'B', 'C'].each { String val ->
switch (val) {
case 'A' :
println("${val} caseA")
break
case 'B' :
println("${val} caseB")
break
default :
println("${val} default")
}
}
}
}
(new Test()).test()
출력 :
이A caseA
A caseB
A default
B caseB
B default
C default
두 번째 테스트 : 단지 @CompileStatic
주석과 everithing가 지느러미를 작동 전자가 : 해결 될 때까지로
A caseA
B caseB
C default
나에게 벌레처럼 보이는하여 case 문 표지 블록을 사용할 수 있습니다, 해제, 당신은 [멋져요 JIRA] (http://jira.codehaus.org/browse에보고 할 수 있습니다/그루비)? –
예, 방금 신고했습니다 [GROOVY-5984] (http://jira.codehaus.org/browse/GROOVY-5984) –
쿨 :-) ([어제는 고정 된 것처럼 보입니다] (https : // github.com/groovy/groovy-core/commit/89d3c59e5dd377989121ffaddc293c0915ebf69c)) 2.1.0을 사용하여이 작업을 수행하기 위해 다음과 같은 불쾌한 해결 방법을 게시했습니다. –