سؤال

ودعونا نقول لدي البرمجية التالية:

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