2012-04-11 44 views
5

Tôi đang cố gắng tìm ra cách tôi có thể tham số hóa các đối tượng OCaml với các đối tượng khác. Cụ thể là tôi muốn có thể để tạo ra một đối tượng link chứa một node đối tượng phía trước và một đối tượng ngược node, và tôi muốn để có thể tạo một liên kết bằng cách nói một cái gì đó như:Đối tượng trong các đối tượng trong OCaml

let link1 = new link node_behind node_ahead;; 

Trả lời

8

Đối tượng là những biểu hiện bình thường trong OCaml, vì vậy bạn có thể chuyển chúng thành các hàm lập phương thức hàm và lớp. Để có giải thích sâu hơn, hãy xem related section trong hướng dẫn sử dụng OCaml.

Ví dụ: bạn có thể viết:

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 
Các vấn đề liên quan