الوسيط نمط تصميم في لغة كامل الموضوعية
-
03-07-2019 - |
سؤال
واني اسعى الى تحقيق ملزم المتبادلة بين فئتين في لغة كامل الموضوعية (أ نمط الوسيط لوس انجليس) وأنا الحصول على خطأ على تجميع.
class virtual ['mediator] colleague mIn = object
val m = mIn
method virtual getmediator : 'mediator
end;;
class concreteColleague mIn = object inherit colleague
method getmediator = m
end;;
(* Some other classes here *)
class mediator = object (self)
val mutable myColleague = (None:colleague option)
initializer
myColleague <- Some (new concreteColleague self)
end;;
خطأ: فئة منشئ زميل يتوقع 1 نوع الوسيطة (ق)، ولكن هنا ينطبق على الحجج 0 اكتب
.لا أستطيع أن أقول أنني كل ما دراية [ 'فو] بناء الجملة في تعريف الفئة ولكن لجأت إليها (مع عدم وجود جدوى) في محاولة للسماح الوسيط للحفاظ على إشارة إلى جميع الزملاء و كل زميل لالوسيط الخاصة به بينما تحاول أيضا للتغلب على أهمية تعريف فئة في شفرة المصدر. كيف يمكنني التوجه نحو السماح للزملاء للحفاظ على الإشارة إلى الوسيط بهم؟
المحلول
وأنا ثابت كل المشاكل تجميع. عند الموروثة من زميل، تحتاج إلى توفير معلمة نوعه. ونتيجة لذلك، concreteColleague أعتقد يحتاج معلمة نوع جدا. أيضا، كنت قد نسيت لتمرير حجة منشئ دقيقة لفئة موروثة. وأضفت معلمة نوع إلى نوع الحرس الخاص لmyColleague، وذلك باستخدام نوع الكائن.
class virtual ['mediator] colleague mIn = object
val m = mIn
method virtual getmediator : 'mediator
end;;
class ['mediator] concreteColleague mIn =
object inherit ['mediator] colleague mIn
method getmediator = m
end;;
(* Some other classes here *)
class mediator = object (self : 'self)
val mutable myColleague = (None:'self colleague option)
initializer
myColleague <- Some (new concreteColleague self)
end;;
ولكن، وأنا لست على دراية نمط الوسيط، لذلك أنا لست متأكدا ما هي الطريقة الصحيحة لتنفيذ نمط الوسيط. هل أنت متأكد أنك بحاجة الأشياء والفصول الافتراضية والاشياء؟