2011-01-03 35 views
5

Tôi đang cố gắng hiểu cách phân cấp Clojure hoạt động, với xuất phátlà-a? cấu trúc. Tôi không chắc làm thế nào tôi sẽ sử dụng chúng với các bản đồ và hồ sơ trong chương trình của tôi. Có ai sử dụng chúng?Cách sử dụng cấu trúc phân cấp clojure?

Trả lời

5

Tôi thấy câu hỏi của bạn hơi mơ hồ. Bạn đã đọc tài liệu trên trang web Clojure chưa?

http://clojure.org/multimethods

Tôi thấy các ví dụ có khá dễ dàng để làm theo:

user=> ::rect 
:user/rect 
user=> (derive ::rect ::shape) 
nil 
user=> (parents ::rect) 
#{:user/shape} 
user=> (derive ::square ::rect) 
nil 
user=> (ancestors ::square) 
#{:user/shape :user/rect} 
user=> (isa? ::square ::shape) 
true 

Ngoài ra còn có bài viết trên blog này với một "thực tế" hơn ví dụ:

http://www.prodevtips.com/2010/06/20/clojure-inheritance/

+0

Cảm ơn , thông tin hữu ích, vì vậy nếu tôi hiểu chính xác nếu tôi có một bản ghi như (defrecord R []) và tôi muốn đặt nó trong một loại hieracrhy thì tôi cần để kết hợp các loại với nó, như (def r (R.)) (assoc r: type :: type). Điều này có đúng không? – Zubair

+0

Tbh, tôi chưa bao giờ làm bất cứ điều gì như thế này với hồ sơ (tiếc là tôi đã không có thời gian để thực sự lặn vào Clojure 1,2 chưa), nhưng nó có vẻ hợp lý. –

Các vấn đề liên quan