Indicare per favore di correggere il collegamento se questo è stato risolto prima.Possiamo abbinare Qualsiasi a un tipo generico? [Scala 2.8]
ho questo codice:
def getResult(a:Any):Any = a
def getAnswer[T](i:Int) = {
val result = getResult(i)
result match {
case t:T => Some(t)
case _ => None
}
}
Questo mi dà una unchecked warning
e tutto ciò corrisponde a T
. Ad esempio, quando faccio lo getAnswer[Int](2)
, ottengo Some(2)
(come previsto). Tuttavia, se faccio getAnswer[String](2)
, ottengo anche Some(2)
che non è previsto (ho bisogno di None
).
C'è un modo per aggirare la cancellazione di tipo e in qualche modo arrivare getAnswer
per funzionare correttamente (vale a dire, tornare Some(result)
se e solo se il risultato è di tipo T
)?
Grazie in anticipo.
Grazie per la tua risposta su come gestire le primitive. Anche la risposta di Alexey è buona. – Jus12
Ho selezionato la risposta corretta perché è in grado di gestire i tipi primitivi. Ancora una volta, grazie per il codice. – Jus12