OCaml编译类相互依赖
OCaml compile classes that depend on each other
假设我有两个 类,分别称为 A (parent) 和 B (child)。 A 存储 B object 的列表,B 存储包含 A object.
的单个实例的变量
据我所知,OCaml 要求 类 根据它们的依赖关系以特定顺序指定(即,如果 C 依赖 D,则需要像下面这样编译代码:ocamlopt -o main D.ml C.ml
)
既然 类 A 和 B 如此紧密地依赖彼此,我们如何将两个 类 编译在一起?
你可以在同一个源文件中定义这两个类,使用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
如果你需要在单独的文件中定义它们,你可以通过另一个的类型参数化其中一个。这个比较复杂。
假设我有两个 类,分别称为 A (parent) 和 B (child)。 A 存储 B object 的列表,B 存储包含 A object.
的单个实例的变量据我所知,OCaml 要求 类 根据它们的依赖关系以特定顺序指定(即,如果 C 依赖 D,则需要像下面这样编译代码:ocamlopt -o main D.ml C.ml
)
既然 类 A 和 B 如此紧密地依赖彼此,我们如何将两个 类 编译在一起?
你可以在同一个源文件中定义这两个类,使用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
如果你需要在单独的文件中定义它们,你可以通过另一个的类型参数化其中一个。这个比较复杂。