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