Question

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 puis-je corriger la dernière ligne de ce code? En gros, je veux juste faire ce qui, dans un langage semblable à celui du C, serait fait:

var bar:Dog = (Dog) foo
Était-ce utile?

La solution

Je l'ai compris moi-même. Il y a deux solutions:

1) Faites la distribution explicite:

var bar:Dog = foo.asInstanceOf[Dog]

2) Utilisez un modèle de correspondance pour le diffuser à votre place. Cela permet également de détecter les erreurs:

var bar:Dog = foo match {
  case x:Dog => x
  case _ => {
    // Error handling code here
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top