defrecord
trong clojure cho phép xác định vùng chứa dữ liệu đơn giản với các trường tùy chỉnh.Macro được đề xuất để thêm chức năng vào hàm tạo dấu gạch ngang của Clojure?
ví dụ:
user=> (defrecord Book [author title ISBN])
user.Book
Các nhà xây dựng tối thiểu mà kết quả chỉ mất đối số vị trí không có chức năng bổ sung như mặc định của các trường, xác nhận hiện trường, vv
user=> (Book. "J.R.R Tolkien" "The Lord of the Rings" 9780618517657)
#:user.Book{:author "J.R.R Tolkien", :title "The Lord of the Rings", :ISBN 9780618517657}
Nó luôn luôn có thể viết các chức năng gói các constructor mặc định để có được ngữ nghĩa xây dựng phức tạp hơn - sử dụng đối số từ khóa, cung cấp mặc định và v.v.
Điều này có vẻ giống như kịch bản lý tưởng cho macro để cung cấp ngữ nghĩa mở rộng. Macro nào mà mọi người đã viết và/hoặc đề xuất xây dựng hơn defrecord
?
Tôi nên chỉ ra rằng defrecord có nhiều thứ cho nó về cách nó hoạt động với hệ sinh thái Clojure/Java, "các thùng chứa dữ liệu đơn giản" ở trên không có nghĩa là thô sơ, hoàn toàn ngược lại. –
Nên nói rằng từ clojure 1.3.0, bạn có thể làm '(map-> Book {: author" JRR Tolkien ",: title" Chúa tể của những chiếc nhẫn ",: ISBN 9780618517657)' hoặc '# user.Book {: tác giả "JRR Tolkien",: tiêu đề "Chúa tể của những chiếc nhẫn",: ISBN 9780618517657} ' – Claude
Để tìm tài liệu về các tính năng được ghi chú bởi Claude, hãy xem: http://dev.clojure.org/display/design/defrecord+ cải tiến –