Rõ ràng, bạn không thể gọi áp dụng với một constructor kỷ lục:Nhà xây dựng bản ghi Clojure không phải là lớp học đầu tiên?
(defrecord Foo. [id field])
(apply Foo. my-list)
thất bại lúc đọc vì nó không được mong đợi Foo. ở nơi đó.
Các chỉ workaround rõ ràng tôi có thể nghĩ là để thêm một chức năng nhà máy:
(make-foo [id field] (Foo. id field))
có thể được apply'ed tất nhiên.
Tôi có thiếu gì không? Tôi mong đợi điều này từ C#/Java nhưng chỉ nghĩ rằng đó là một chút thất vọng trong Clojure ...
đồng ý đó là một chút của một kỳ quặc, nhưng cá nhân nó không bao giờ là một vấn đề như tôi tìm thấy các chức năng máy khá hữu ích - mô hình này hỗ trợ việc sử dụng Clojure thành ngữ hơn, mang lại cho bạn sự linh hoạt hơn trong các tham số tiền xử lý, cho phép các bộ tạo khác nhau cho các mục đích khác nhau, cung cấp một lớp trừu tượng, vv – mikera