GroovyのisCaseで正規表現がマッチしない?らしい
GroovyのisCaseで正規表現がマッチしない? - No Programming, No Life
という投稿を見つけ、早速試してみる。ちょっとソースを修正して実行してみる。
実行結果は
ほんとだ。isCaseが聞いてない。Groovyがバグっているのかな?
println zipCode.isCase(/d{3}-d{4}/)
でも
println zipCode.isCase("\d{3}-\d{4}")
でも
だめっぽい。
もうちょっと色々出力してみる。
結果はそれぞれ
ううーん。 なぜswitch文だとうまく判定してくれるんだ。
こりゃ時間を見つけてGroovy本体のソースにぶつかるしか。そのうちね、そのうち・・・。
ディスカッション
コメント一覧
Grails徹底入門2.6.3には書いたのですが、
======
switch (s) {
case c:
}
のとき、分岐の判断時にc.isCase(s) メソッドが呼び出され、その結果が真のときにそのcase
節が実行されます
=======
つまり、ご提示のswitch文に対応するisCase呼び出しは
println ((~/d{3}-d{4}/).isCase(zipCode))
です。