2012-04-11 3 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 
관련 문제