Укажите, пожалуйста чтобы исправить ссылку, если на это уже был дан ответ.
У меня есть этот код:
def getResult(a:Any):Any = a
def getAnswer[T](i:Int) = {
val result = getResult(i)
result match {
case t:T => Some(t)
case _ => None
}
}
Это дает мне непроверенное предупреждение
, и все соответствует T
. Например, когда я выполняю getAnswer [Int] (2)
, я получаю Some (2)
(как и ожидалось). Однако если я сделаю getAnswer [String] (2)
, Я также получаю Some (2)
, чего я не ожидал (мне нужно None
).
Есть ли способ обойти стирание типа и каким-то образом заставить getAnswer
работать правильно (т. Е. Вернуть Some (result)
, если и только если результат имеет тип ] Т
)?
Заранее спасибо.