Conversione di tipo esplicita in Scala
-
05-07-2019 - |
Domanda
Diciamo che ho il seguente codice:
abstract class Animal
case class Dog(name:String) extends Animal
var foo:Animal = Dog("rover")
var bar:Dog = foo //ERROR!
Come riparo l'ultima riga di questo codice? Fondamentalmente, voglio solo fare cosa, in un linguaggio di tipo C sarebbe fatto:
var bar:Dog = (Dog) foo
Soluzione
L'ho capito da solo. Esistono due soluzioni:
1) Esegui il cast esplicito:
var bar:Dog = foo.asInstanceOf[Dog]
2) Usa il pattern matching per lanciarlo per te, anche questo rileva errori:
var bar:Dog = foo match {
case x:Dog => x
case _ => {
// Error handling code here
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow