前回の続き。
TypeTagを教えていただいたので、早速使います。
TypeTagとは、全ての型情報を実行時に持ち込むオブジェクトのこと。
早速書き換えてみる。
// http://stackoverflow.com/questions/12218641/scala-what-is-a-typetag-and-how-do-i-use-it import scala.reflect.runtime.universe._ val a = Some(List(1, 2, 3)) val b = Some("hoge") def printmatch[A : TypeTag](xs: A) = typeOf[A] match { case t if t =:= typeOf[Some[List[Int]]] => "option list int" case _ => "i have no idea" } println(printmatch(a)) // option list int println(printmatch(b)) // i have no idea
うん、ほぼうまくいきました。