Допустим, я хочу написать универсальную функцию foo
, которая будет использовать сопоставление с образцом, чтобы проверять, относится ли переданный аргумент к типу его универсального аргумента T
.
Наивная попытка:
def foo[T]: PartialFunction[Any, Boolean] = {
case x: T =>
true
case _ =>
false
}
... не будет работать, так как T
стирается. Предупреждение компилятора подтверждает, что:
Warning:(11, 13) abstract type pattern T is unchecked since it is eliminated by erasure
case x: T =>
^
Как лучше всего заставить его работать?
ClassTag
). - person Travis Brown   schedule 06.10.2014