2012-04-11 18 views
5

Estoy tratando de averiguar cómo puedo parametrizar objetos OCaml con otros objetos. Específicamente quiero ser capaz de crear un objeto link que contiene una node objeto hacia delante y un objeto hacia atrás node, y yo quiero ser capaz de crear un vínculo diciendo algo como:Objetos dentro de objetos en OCaml

let link1 = new link node_behind node_ahead;; 

Respuesta

8

objetos son expresiones normales en OCaml, por lo que puede pasarlos como argumentos de constructor de clase y función. Para una explicación más profunda, consulte el manual related section en OCaml.

Así, por ejemplo, se puede escribir:

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 
Cuestiones relacionadas