تحويل نوع واضح في سكالا
-
05-07-2019 - |
سؤال
ودعونا نقول لدي البرمجية التالية:
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
}
}
لا تنتمي إلى StackOverflow