在Scala中的显式types转换

比方说,我有以下代码:

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 

我自己想到了这一点。 有两个解决scheme:

1)做明确的演员:

 var bar:Dog = foo.asInstanceOf[Dog] 

2)使用模式匹配为您施放,这也会产生错误:

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