チェックする値 match {
case 値1 => 実行する処理
case 値2 => 実行する処理
……必要なだけcaseを用意……
case _ => その他の場合の処理
}value match {
case n:Int => ……整数の時の処理……
case n:String => ……テキストの時の処理……
case _ => ……その他の処理……
}これは、変数valueの値が整数かテキストかそれ以外かで異なる処理を行わせる書き方です。このように、caseの後に型指定した変数を用意することで、その型の値の時の処理を記述できます。また最後に「case _」とありますが、このアンダースコアはワイルドカードの働きをするもので、「すべてのcaseに合致しなかった場合」の処理を用意できます。Javaのswitch-caseにおける「default:」に相当するものといってよいでしょう。value match {
case n if (条件) => ……処理……
case n if (条件) => ……処理……
}こんな具合ですね。これで条件設定を使った分岐が可能となります。ちょっとわかりにくいので、実際の利用例を下にあげておきます。1~12の乱数の値を取得し、その値によって表示を変えています。case 1といった単純な値の指定と、case n:Int if (n < 3)というようにパターンガードを指定したものが組み合わせられていることがわかるでしょう。※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
import java.util._
object myapp {
def main(args: Array[String]) {
val rnd = new Random
val month = rnd.nextInt(12) + 1
print(month + "月といえば、")
month match {
case 1
=> println("お正月です。")
case n:Int if (n < 3)
=> println("冬です。")
case n:Int if (n < 6)
=> println("春です。")
case 6
=> println("梅雨です。")
case n:Int if (n < 9)
=> println("夏です。")
case n:Int if (n < 12)
=> println("秋です。")
case 12
=> println("今年も終わりです。")
case _ => println("よくわかりません。")
}
}
}
| << 前へ | 次へ >> |