11
클로저 레코드를 인스턴스화 할 때 레코드의 모든 필드를 설정하지 않으면 오류가 발생합니다. 일부 필드를 선택적으로 지정하려면 어떻게합니까?Clojure 레코드에 선택적 필드를 만드시겠습니까?
클로저 레코드를 인스턴스화 할 때 레코드의 모든 필드를 설정하지 않으면 오류가 발생합니다. 일부 필드를 선택적으로 지정하려면 어떻게합니까?Clojure 레코드에 선택적 필드를 만드시겠습니까?
defrecord
은 유형 및 생성자를 선언하지만 유형은 클로저 맵 인터페이스를 구현합니다. 선언에 필수 필드를 넣으면됩니다. 예를 들어,
(defrecord MyRecord [required1 required2])
(defn make-my-record [r1 r2 & [opt1 opt2]]
(assoc (MyRecord. r1 r2) :optional1 opt1 :optional2 opt2))
이처럼 사용할 수 있습니다
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}