Conversión explícita de tipos en Scala
-
05-07-2019 - |
Pregunta
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 lo que se haría en un lenguaje tipo C:
var bar:Dog = (Dog) foo
Solución
Lo he descubierto yo mismo. Hay dos soluciones:
1) Haz el reparto explícito:
var bar:Dog = foo.asInstanceOf[Dog]
2) Utiliza la coincidencia de patrones para convertirlo por ti, esto también detecta errores:
var bar:Dog = foo match {
case x:Dog => x
case _ => {
// Error handling code here
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow