Proszę wskazać mi poprawny link, jeśli wcześniej udzielono na nie odpowiedzi.Czy możemy dopasować Dowolny do rodzaju ogólnego? [Scala 2.8]
mam ten kod:
def getResult(a:Any):Any = a
def getAnswer[T](i:Int) = {
val result = getResult(i)
result match {
case t:T => Some(t)
case _ => None
}
}
To daje mi unchecked warning
i wszystko pasuje do T
. Na przykład, gdy wykonuję getAnswer[Int](2)
, otrzymuję Some(2)
(zgodnie z oczekiwaniami). Jednakże, jeśli wykonam getAnswer[String](2)
, otrzymam również Some(2)
, którego się nie spodziewam (potrzebuję None
).
Czy istnieje sposób obejścia wymazywania typu i jakoś uzyskać poprawne działanie getAnswer
(tzn. Powrócić Some(result)
wtedy i tylko wtedy, gdy wynik jest typu T
)?
Z góry dziękuję.
Dziękujemy za odpowiedź na temat obsługi prymitywów. Odpowiedź Alexey'a jest również dobra. – Jus12
Wybrałem odpowiedź jako poprawną, ponieważ obsługuje ona typy pierwotne. Jeszcze raz, dzięki za kod. – Jus12