5

OCaml オブジェクトを他のオブジェクトでパラメータ化する方法を見つけようとしています。具体的にlinkは、前方nodeオブジェクトと後方nodeオブジェクトを含むオブジェクトを作成できるようにしたいのですが、次のように言ってリンクを作成できるようにしたいです。

let link1 = new link node_behind node_ahead;;
4

1 に答える 1

8

オブジェクトは 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
于 2012-04-11T19:40:44.153 に答える