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
Foi útil?

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
scroll top