Scalaでの悲しい事実は、List [Int]をインスタンス化すると、インスタンスがListであること、およびその個々の要素がIntであることを確認できますが、それがList [ Int]、簡単に確認できるように:
scala> List(1,2,3) match {
| case l : List[String] => println("A list of strings?!")
| case _ => println("Ok")
| }
warning: there were unchecked warnings; re-run with -unchecked for details
A list of strings?!
-uncheckedオプションは、型の消去を非難します。
scala> List(1,2,3) match {
| case l : List[String] => println("A list of strings?!")
| case _ => println("Ok")
| }
<console>:6: warning: non variable type-argument String in type pattern is unchecked since it is eliminated by erasure
case l : List[String] => println("A list of strings?!")
^
A list of strings?!
それはなぜですか、どうすれば回避できますか?
TypeTag
sに関するやや関連のある質問を次に示します。
scala 2.10.2
、代わりにこの警告が表示されました。<console>:9: warning: fruitless type test: a value of type List[Int] cannot also be a List[String] (but still might match its erasure) case list: List[String] => println("a list of strings?") ^
質問と回答は非常に役立つと思いますが、この更新された警告が読者に役立つかどうかはわかりません。