11
Khi tôi khởi tạo bản ghi clojure, tôi gặp lỗi nếu tôi không đặt tất cả các trường của bản ghi. Làm cách nào tôi có thể chỉ định một số trường là tùy chọn?Tạo các trường tùy chọn trên bản ghi Clojure?
Khi tôi khởi tạo bản ghi clojure, tôi gặp lỗi nếu tôi không đặt tất cả các trường của bản ghi. Làm cách nào tôi có thể chỉ định một số trường là tùy chọn?Tạo các trường tùy chọn trên bản ghi Clojure?
defrecord
tuyên bố loại và hàm tạo, nhưng loại thực hiện giao diện bản đồ clojure. Bạn chỉ cần đặt các trường bắt buộc trong khai báo. Ví dụ,
(defrecord MyRecord [required1 required2])
(defn make-my-record [r1 r2 & [opt1 opt2]]
(assoc (MyRecord. r1 r2) :optional1 opt1 :optional2 opt2))
có thể được sử dụng như thế nào,
user> (make-my-record 1 2)
#:user.MyRecord{:required1 1, :required2 2, :optional2 nil, :optional1 nil}
user> (make-my-record 1 2 :a :b)
#:user.MyRecord{:required1 1, :required2 2, :optional2 :b, :optional1 :a}