2012-04-11 21 views
5

OCaml nesnelerini diğer nesnelerle nasıl parametreleştirebileceğimi bulmaya çalışıyorum. Özellikle ben bir ileri node nesne ve bir geriye node nesnesi içeren bir link nesne oluşturmak için muktedir istiyorum, ve benzeri şeyler söyleyerek bir bağlantı oluşturmak için mümkün istiyorum:OCaml içindeki nesnelerdeki nesneler

let link1 = new link node_behind node_ahead;; 

cevap

8

Nesneler normal ifadelerdir OCaml, böylece bunları işlev ve sınıf yapıcı argümanları olarak iletebilirsiniz. Daha derin bir açıklama için, OCaml kılavuzunda related section'a bakın.

Yani örneğin, yazabilirsiniz:

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