Explícita Tipo de Conversão em Scala
-
05-07-2019 - |
Pergunta
Vamos dizer que eu tenho o seguinte código:
abstract class Animal
case class Dog(name:String) extends Animal
var foo:Animal = Dog("rover")
var bar:Dog = foo //ERROR!
Como faço para corrigir a última linha desse código? Basicamente, eu só quero fazer o que, em um C-como a linguagem seria feito:
var bar:Dog = (Dog) foo
Solução
Eu descobri isso sozinho. Há duas soluções:
1) Fazer a conversão explícita:
var bar:Dog = foo.asInstanceOf[Dog]
2) Use a correspondência de padrão para lançá-lo para você, isso também pega erros:
var bar:Dog = foo match {
case x:Dog => x
case _ => {
// Error handling code here
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow