Disons que j'ai le code suivant:
abstract class Animal
case class Dog(name:String) extends Animal
var foo:Animal = Dog("rover")
var bar:Dog = foo //ERROR!
Comment réparer la dernière ligne de ce code? Fondamentalement, je veux juste faire quoi, dans un langage de type C, ce serait fait:
var bar:Dog = (Dog) foo
Je l'ai compris moi-même. Il existe deux solutions:
1) Faites le casting explicite:
var bar:Dog = foo.asInstanceOf[Dog]
2) Utilisez la correspondance de motifs pour le lancer pour vous, cela détecte également les erreurs:
var bar:Dog = foo match {
case x:Dog => x
case _ => {
// Error handling code here
}
}