2008/12/09

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

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

id:uehajさんに教えていただきました。いつも教えていただきありがとうございます!

--------------------------------------------

======
switch (s) {
    case c:
}
のとき、分岐の判断時にc.isCase(s) メソッドが呼び出され、その結果が真のときにそのcase
節が実行されます
=======
--------------------------------------------

な、なるほど。

switch( x ){
    case a:
    case b:
    case c:
}

は、

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

よかたー

2 件のコメント:

  1. 「~ is case of ○○」
    ~は○○のケース(のうちのひとつ)である
    みたいな感じで覚えておくと良さそうですよね。

    返信削除
  2. >fumokmmさん
    コメントありがとうございます。

    ・「~ is case of ○○」
    ・「~は○○のケース(のうちのひとつ)である」
    ・「〜.isCase(○○)」
    ですね。了解です。

    返信削除