web-dev-qa-db-ja.com

Scalaでの明示的な型変換

次のコードがあるとしましょう:

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

このコードの最後の行を修正するにはどうすればよいですか?基本的には、Cライクな言語で行われることを行うだけです。

var bar:Dog = (Dog) foo
75
Kevin Albrecht

私は自分でこれを理解しました。 2つの解決策があります。

1)明示的なキャストを行います:

var bar:Dog = foo.asInstanceOf[Dog]

2)パターンマッチングを使用してキャストします。これもエラーをキャッチします。

var bar:Dog = foo match {
  case x:Dog => x
  case _ => {
    // Error handling code here
  }
}
138
Kevin Albrecht