Conversion de type explicite dans Scala

Disons que j’ai le code suivant:

abstract class Animal case class Dog(name:Ssortingng) 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 C-like serait fait:

 var bar:Dog = (Dog) foo 

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

1) Faites la dissortingbution explicite:

 var bar:Dog = foo.asInstanceOf[Dog] 

2) Utilisez la correspondance de motif pour la lancer pour vous, cela attrape également des erreurs:

 var bar:Dog = foo match { case x:Dog => x case _ => { // Error handling code here } }