77

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

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
4

1 に答える 1

148

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

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

var bar:Dog = foo.asInstanceOf[Dog]

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

var bar:Dog = foo match {
  case x:Dog => x
  case _ => {
    // Error handling code here
  }
}
于 2008-10-05T05:09:59.450 に答える