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
È stato utile?

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
scroll top