2012-05-25 32 views
11

Có gì đó giống như struct-map để lưu trữ không? Nếu không, tôi có nên sử dụng cấu trúc (tài liệu không khuyến khích sử dụng cấu trúc) không?Cách điền bản ghi Clojure từ bản đồ?

Có lẽ tôi đang làm sai điều hoàn toàn? Tôi có một chức năng khá phức tạp, hiện đang có một bản đồ các tùy chọn. Tôi đang cố gắng làm rõ những giá trị tùy chọn nào được chấp nhận/sử dụng (bằng cách thay thế nó bằng một bản ghi). Và bây giờ tôi muốn giao diện mã đó có thông tin này trong bản đồ (và chứa một siêu dữ liệu trong bản ghi).

Trả lời

19

Bạn không nên sử dụng hồ sơ chỉ đơn giản là cho "tài liệu" - các bản đồ cũ đơn giản hơn, linh hoạt hơn và dễ dàng hơn. Đối với tài liệu, bạn chỉ có thể thêm một chuỗi tài liệu hoặc nhận xét hoặc tạo một hàm như (defn make-whatever [thing1 thing2]).

Nếu bạn vẫn muốn có một bản ghi, bạn có một vài lựa chọn tùy thuộc vào việc bạn đang sử dụng phiên bản clojure 1.3 trở lên. Nếu vậy, (defrecord Whatever ...) cũng xác định một hàm map->Whatever và hàm ->Whatever sẽ lấy các tham số vị trí. Nếu không, bạn có thể viết (into (Whatever. nil nil nil) some-map) (chuyển số lượng đúng của nils cho loại bản ghi).

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