Oop OCaml中对象中的对象

Oop OCaml中对象中的对象,oop,object,ocaml,Oop,Object,Ocaml,我正试图找出如何用其他对象参数化OCaml对象。具体来说,我希望能够创建一个链接对象,该对象包含一个向前的节点对象和一个向后的节点对象,我希望能够通过如下方式创建链接: let link1 = new link node_behind node_ahead;; 对象是OCaml中的普通表达式,因此可以将它们作为函数和类构造函数参数传递。有关更深入的解释,请参阅OCaml手册中的 例如,你可以写: class node (name : string) = object method name

我正试图找出如何用其他对象参数化OCaml对象。具体来说,我希望能够创建一个
链接
对象,该对象包含一个向前的
节点
对象和一个向后的
节点
对象,我希望能够通过如下方式创建链接:

let link1 = new link node_behind node_ahead;;

对象是OCaml中的普通表达式,因此可以将它们作为函数和类构造函数参数传递。有关更深入的解释,请参阅OCaml手册中的

例如,你可以写:

class node (name : string) = object
  method name = name
end

class link (previous : node) (next : node) = object
  method previous = previous
  method next = next
end

let () =
  let n1 = new node "n1" in
  let n2 = new node "n2" in
  let l = new link n1 n2 in
  Printf.printf "'%s' -> '%s'\n" l#previous#name l#next#name