Conversion de type explicite dans Scala
-
05-07-2019 - |
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
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