문제

다음 코드가 있다고 가정 해 봅시다.

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
도움이 되었습니까?

해결책

나는 이것을 스스로 알아 냈다. 두 가지 해결책이 있습니다.

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