2012-04-11 8 views
5

Ich versuche herauszufinden, wie ich OCaml-Objekte mit anderen Objekten parametrisieren kann. Insbesondere möchte ich in der Lage sein, ein link Objekt zu erstellen, die eine nach vorne node Objekt enthält und eine nach hinten node Objekt, und ich möchte sagen, so etwas wie einen Link erstellen können:Objekte in Objekten in OCaml

let link1 = new link node_behind node_ahead;; 

Antwort

8

Objekte sind normale Ausdrücke in OCaml, also können Sie sie als Funktions- und Klassenkonstruktorargumente übergeben. Für eine tiefere Erklärung schauen Sie sich das related section in OCaml Handbuch an.

So zum Beispiel, können Sie schreiben:

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