web-dev-qa-db-fra.com

Conversion de type explicite dans Scala

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
75
Kevin Albrecht

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
  }
}
138
Kevin Albrecht