GroovyのisCaseで正規表現がマッチしない?らしい の続き

2019-05-12Groovy

GroovyのisCaseで正規表現がマッチしない?らしい | ゲンゾウ用ポストイット の続き。

ヒントをいただく

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

よかった〜

2019-05-12Groovy