سؤال

واني اسعى الى تحقيق ملزم المتبادلة بين فئتين في لغة كامل الموضوعية (أ نمط الوسيط لوس انجليس) وأنا الحصول على خطأ على تجميع.

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;;

ولكن، وأنا لست على دراية نمط الوسيط، لذلك أنا لست متأكدا ما هي الطريقة الصحيحة لتنفيذ نمط الوسيط. هل أنت متأكد أنك بحاجة الأشياء والفصول الافتراضية والاشياء؟

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