假设我有两个叫A(父)和B(子)的类。 A存储B对象列表,B存储包含A对象的单个实例的变量。
据我所知,OCaml要求根据它们的依赖关系以某种顺序指定类(即如果C依赖于D,则需要编译如下代码:ocamlopt -o main D.ml C.ml
)
由于A类和B类之间的关系非常紧密,我们如何将这两个类一起编译?
答案 0 :(得分:1)
您可以使用and
在同一源文件中定义这两个类,以便递归定义它们。
# class a = object val my_b_list : b list = [] end
and b = object val my_a : a = new a end;;
class a : object val my_b_list : b list end
and b : object val my_a : a end
如果需要在单独的文件中定义它们,可以通过另一个文件的类型对其中一个进行参数化。这更复杂。