2012-04-11 8 views
5

他のオブジェクトでOCamlオブジェクトをどのようにパラメータ化できるかを調べようとしています。具体的に私は前方node対象と後方nodeオブジェクトを含むlinkオブジェクトを作成することができるようにしたい、と私はのようなものと言ってリンクを作成することができるようにしたい:OCamlのオブジェクト内のオブジェクト

let link1 = new link node_behind node_ahead;; 

答えて

8

オブジェクトの中に、通常の式ですOCamlで、関数とクラスのコンストラクタ引数として渡すことができます。詳細な説明は、OCamlマニュアルのrelated sectionを参照してください。

だから、例えば、あなたが書くことができます。

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 
関連する問題