سؤال

في Scaladoc من تعداد الفئة#VAL ، يمكنني قراءة: "فئة تنفذ نوع القيمة. يمكن تجاوز هذه الفئة لتغيير سلوك تسمية التعداد وتحديد عدد صحيح." أنا في حيرة: كيف يمكنني تجاوز الفصل؟ اشياء مثل override class Val extends super.Val غير مسموح بها.

هل كانت مفيدة؟

المحلول

لا توجد فئات افتراضية في Scala (حتى الآن) ، لذلك لا يمكنك الكتابة override class Val ..., ، ثم تأكد من التذرع new Val سوف تختار ديناميكيًا الفئة المناسبة للمثيل الجديد. ما سيحدث بدلاً من ذلك هو أنه سيتم اختيار الفصل بناءً على نوع الإشارة إلى مثيل الفئة المرفقة (في هذه الحالة ، Enumeration).

الحيلة العامة لمحاكاة الفصول الافتراضية هي الكتابة class Val extends super.Val, ، ثم تجاوز طريقة محمية تعمل كمصنع لحالات الفصل. في هذه الحالة ، يجب عليك أيضًا تجاوز الطريقة:

protected def Value(i: Int, name: String): Value = new Val(i, name)

Enumeration سوف يخلق مثيلات من Val فقط باستخدام طريقة المصنع هذه. بشكل عام ، يتطلب هذا النمط الانضباط من جانب المبرمج ، ولكن يمكن ضمانه من خلال إعلان المُنشئين الخاصين ، مما يجبر المبرمج على استخدام طريقة المصنع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top