object Matcher {
def main(args:Array[String]):Unit = {
val nekoz = genCats()
nekoz.foreach{ x =>
x match {
case MyCat(a,b) if a > 5 => println("Adult neko.")
case _ => println("..")
}
}
nekoz match {
case l @ List(MyCat(8, _), _*) => println(s"okay, starting with 8 year old cat - $l")
case _ => println("..")
}
}
def genCats() = {
MyCat(8, "Tora") :: MyCat(4, "Mikeyo") :: List()
}
}
case class MyCat(age:Int, name:String)
木曜日, 12月 31, 2015
Scala - Sequenceマッチ
Scalaのmatch文は極めて強力で,そのうちの一つのリスト要素へのパターンマッチも便利なものの一つだろう.以下の例はMyCatへのコンストラクタマッチとリスト要素へのシーケンスパターンマッチの組み合わせの例.もしパターンマッチ内でジェネリック型も含めた型パターンマッチ等をしていて,かつJavaからそのscalaコードから作られたクラスを利用する場合は,Javaの型消去の特性に気を付けるように.
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿