私は初心者の groovy プログラマーであり、静的コンパイル (@CompileStatic
注釈) を使用した switch-case-break ステートメントの奇妙な動作に直面しました。break
s は無視されているようです。
それはバグですか、それともドキュメントを読んでいるときに何かを見逃したのですか。
環境:
- 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
2 番目のテスト: コメントするだけ@CompileStatic
そして、すべてがうまくいきます:
A caseA
B caseB
C default