例如,如果我有一个接受 Type 参数的类Seq[T]
,我有很多此类的对象。我想根据类型参数拆分它们T
例如 :
val x = List(Seq[Int](1,2,3,4,5,6,7,8,9,0),Seq[String]("a","b","c"))
x.foreach { a =>
a match{
case _ : Seq[String] => print("String")
case _ : Seq[Int] => print("Int")
}
}
这段代码的结果是StringString
。
它只匹配班级Seq
也不是类型,我应该做什么来强制它匹配类型?
您所看到的情况是由于类型擦除而发生的(http://docs.oracle.com/javase/tutorial/java/generics/erasure.html http://docs.oracle.com/javase/tutorial/java/generics/erasure.html),某些 IDE 可以警告您此类错误。
您可以查看清单,例如查看Scala 中的清单是什么?什么时候需要它? https://stackoverflow.com/questions/3213510/what-is-a-manifest-in-scala-and-when-do-you-need-it
编辑:就像 Patryk 所说,TypeTag 在 Scala 2.10 中取代了 Manifest,请参阅Scala:什么是 TypeTag 以及如何使用它? https://stackoverflow.com/questions/12218641/scala-2-10-what-is-a-typetag-and-how-do-i-use-it
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)