Explícita Tipo de Conversão em Scala

votos
74

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 linguagem C-like seria feito:

var bar:Dog = (Dog) foo
Publicado 05/10/2008 em 05:32
fonte usuário
Em outras línguas...                            


1 respostas

votos
134

Eu descobri isso sozinho. Há duas soluções:

1) Faça o elenco explícito:

var bar:Dog = foo.asInstanceOf[Dog]

2) Use a correspondência de padrões para lançá-lo para você, isso também pega erros:

var bar:Dog = foo match {
  case x:Dog => x
  case _ => {
    // Error handling code here
  }
}
Respondeu 05/10/2008 em 06:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more