Pregunta Conversión explícita de tipos en Scala


Digamos que tengo el siguiente código:

abstract class Animal
case class Dog(name:String) extends Animal
var foo:Animal = Dog("rover")
var bar:Dog = foo //ERROR!

¿Cómo arreglo la última línea de este código? Básicamente, solo quiero hacer qué, en un lenguaje tipo C:

var bar:Dog = (Dog) foo

74
2017-10-05 04:32


origen


Respuestas:


Me di cuenta de esto yo mismo. Hay dos soluciones:

1) Haz el lanzamiento explícito:

var bar:Dog = foo.asInstanceOf[Dog]

2) Usa la coincidencia de patrones para lanzarlo por ti, esto también atrapa errores:

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

135
2017-10-05 05:09