Явное приведение типов в Scala - PullRequest
75 голосов
/ 05 октября 2008

Допустим, у меня есть следующий код:

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

Как мне исправить последнюю строку этого кода? По сути, я просто хочу сделать то, что на языке C-like будет сделано:

var bar:Dog = (Dog) foo

1 Ответ

136 голосов
/ 05 октября 2008

Я понял это сам. Есть два решения:

1) Выполните явное приведение:

var bar:Dog = foo.asInstanceOf[Dog]

2) Используйте сопоставление с образцом, чтобы привести его к вам, это также ловит ошибки:

var bar:Dog = foo match {
  case x:Dog => x
  case _ => {
    // Error handling code here
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...