(s/keys :opt [::k1 ::k2])
에 언급 된 키의 기본값을 지정하는 방법이 있습니까? 같은은 clojure.spec에 기본값을 제공합니다.
뭔가 :
(s/keys :opt [(with-default ::k1 "default1") (with-default ::k2 "default2")])
가 아니면 clojure.spec 이외의 디폴트 값을 처리하는 것이 더 관용적인가?
(s/keys :opt [::k1 ::k2])
에 언급 된 키의 기본값을 지정하는 방법이 있습니까? 같은은 clojure.spec에 기본값을 제공합니다.
뭔가 :
(s/keys :opt [(with-default ::k1 "default1") (with-default ::k2 "default2")])
가 아니면 clojure.spec 이외의 디폴트 값을 처리하는 것이 더 관용적인가?
나는 그렇게 생각하지 않는다. clojure.spec
은 주로 데이터 유효성 검사 및 구조와 관련이 있으며, 풍부화, 강제 변환 또는 변경 데이터가 아닙니다. 그래서 당신 스스로 그것을해야 할 것입니다. 예 :
(merge {::k1 "default" ::k2 "default"} {::k1 2}) ;;=> {::k1 2, ::k2 "default"}
또는 연관 destructuring 사용 :
(let [{k1 ::k1 k2 ::k2 :or {k1 "default", k2 "default"}}
{::k1 2}]
[k1 k2]) ;; => [2 "default"]
또는 유사를 :
(let [{:keys [::k1 ::k2] :or {k1 "default" k2 "default"}}
{::k1 2}]
[k1 k2]) ;; => [2 "default"]
가 명시 적 기능 사양이를 위해없고 난 당신이 그것을 처리 기대 코드가 아니라 사양에 있습니다.
이 작업을 s/conformer
으로 수행하는 것이 가능하지만이 기능을 사용하는 것이 좋습니다.
동의하지만 clojure.spec/conform이 입력 내용을 수정할 수 있다고 문서에 명시되어 있습니다. 다음의 경우에 : 매개 변수가 clojure.spec/coll-of에 주어집니다. – aav