3
有人可以解釋爲什麼這給出了擦除警告?斯卡拉的流刪除警告
def optionStreamHead(x: Any) =
x match {
case head #:: _ => Some(head)
case _ => None
}
給出:
warning: non variable type-argument A in type pattern scala.collection.immutable.Stream[A] is unchecked since it is eliminated by erasure
case head #:: _ => Some(head)
我知道我可以寫這種情況下if (x.isInstanceOf[Stream[_]]) ...
,並沒有得到警告,但對我來說我真的想使用模式匹配和具有警告的一大堆我不「不懂,似乎壞
這裏還有一個同樣令人費解的情況下:
type IsStream = Stream[_]
("test": Any) match {
case _: Stream[_] => 1 // no warning
case _: IsStream => 2 // type erasure warning
case _ => 3
}
怎麼樣的第二個例子是,也有斯卡拉錯誤? – Heptic
@Heptic:抱歉,我一定忽略了這一點。我編輯了我的答案。 – sschaef