75 votes

Conversion explicite des types en 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 corriger la dernière ligne de ce code ? En gros, je veux juste faire ce qui, dans un langage de type C, serait fait :

var bar:Dog = (Dog) foo

139voto

Kevin Albrecht Points 2527

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

1) Faites le casting explicite :

var bar:Dog = foo.asInstanceOf[Dog]

2) Utilisez le filtrage par correspondance pour le faire à votre place, ce qui permet également de détecter les erreurs :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X