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 件のコメント:
コメントを投稿