GroovyのisCaseで正規表現がマッチしない?らしい の続き
GroovyのisCaseで正規表現がマッチしない?らしい | ゲンゾウ用ポストイット の続き。
Contents
ヒントをいただく
id:uehaj さんに教えていただきました。いつも教えていただきありがとうございます!
switch (s) {
case c:
}
のとき、分岐の判断時にc.isCase(s) メソッドが呼び出され、その結果が真のときにそのcase
節が実行されます
な、なるほど。
switch( x ){
case a:
break;
case b:
break;
case c:
break;
}
は、
x.isCase(a)
、x.isCase(b)
、x.isCase(c)
と評価されていくんじゃなく、a.isCase(x)
、b.isCase(x)
、c.isCase(x)
と評価されていくんだ。
コード
def zipCode = "123-4567"
switch (zipCode) {
case ~/d{3}-d{4}/:
println "郵便番号"
break
default:
println "他の何か"
break
}
println((~/d{3}-d{4}/).isCase(zipCode))
実行結果
郵便番号
true
よかった〜
ディスカッション
コメント一覧
「~ is case of ○○」
~は○○のケース(のうちのひとつ)である
みたいな感じで覚えておくと良さそうですよね。
>fumokmmさん
コメントありがとうございます。
・「~ is case of ○○」
・「~は○○のケース(のうちのひとつ)である」
・「〜.isCase(○○)」
ですね。了解です。