正規表現を使ったパターンマッチの例
def patternMatch(args:String) {
// 正規表現を定義する
val pattern1 = "([0-9]+)".r
val pattern2 = "([a-zA-Z]+)".r
args match {
// caseで定義した正規表現を指定する。
// 前方参照可能なグループがある場合には、そのグループを代入する定数を指定する。
case pattern1(n) => println("number = " + n)
case pattern2(s) => println("string = " + s)
case s:String => println("other = " + s)
}
}
patternMatch("100") // -> number = 100
patternMatch("abc") // -> string = abc
patternMatch("abc100") // -> other = abc100
こんな感じにいけるんかと思ってたけどコンパイルエラーで悩まされた・・・
args match {
case "([0-9])+".r => println("number")
case "([a-zA-Z)+".r => println("string")
case s: String => println("other = " + s)
}