我正在尝试在 OCaml 中完成两个类之间的相互绑定(a la Mediator Pattern's),并且在编译时出现错误。
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 个类型参数。
我不能说我对类定义中的 ['foo] 语法非常熟悉,但是在试图让调解员保留对所有同事和每个同事的引用时,我已经求助于它(无济于事)它各自的中介,同时也试图克服源代码中类定义的重要性。我该如何让同事保留对他们调解员的参考?