質問

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

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
役に立ちましたか?

解決

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

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

var bar:Dog = foo.asInstanceOf[Dog]

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

var bar:Dog = foo match {
  case x:Dog => x
  case _ => {
    // Error handling code here
  }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top