Можем ли мы сопоставить Any с универсальным типом? [Scala 2.8]

Укажите, пожалуйста чтобы исправить ссылку, если на это уже был дан ответ.

У меня есть этот код:

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) , если и только если результат имеет тип ] Т )?

Заранее спасибо.

5
задан Ben Lings 1 February 2011 в 07:21
поделиться