Может ли кто-нибудь объяснить, почему это дает предупреждение об удалении?
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
}