4
I coerce eine Karte Wert wie folgt:Clojure spec coerce verschachtelt Karte Wert
(require '[clojure.spec :as s])
(defn x-integer? [x]
(cond
(integer? x) x
(string? x) (try
(Integer/parseInt x)
(catch Exception e
:clojure.spec/invalid))
:else :clojure.spec/invalid))
(s/def ::port (s/conformer x-integer?))
(s/def ::config (s/keys :req [::port]))
(s/conform ::config {::port "12345"}) ;;=> #:my.ns{:port "12345"}
aber ich sehe nicht, wie ich mit der folgenden Karte das gleiche tun könnte stattdessen:
(s/conform ::config {::nested-data {:port "12345"}}) ;;=> something like that maybe ? #:my.ns/nested-data{:port 12345}
Wie sollte ::config
definiert werden? Wäre es auch vorzuziehen, stattdessen {::nested-data {::port "12345"}}
zu haben?
Es sieht aus wie Sie fehlen eine :: Port-Spezifikation, die x-Integer verwendet? Dieses Beispiel scheint unvollständig zu sein. –
@AlexMiller Sie haben Recht, Frage bearbeitet. – nha