我已经看到在各种要点中使用 clojure 构象器来强制数据,但也有一个印象(我不记得在哪里)强制(例如如下)不是构象器的惯用用法。
(s/def :conformers/int
(s/conformer (fn [x]
(cond
(integer? x) x
(re-matches #"\d+" x) (edn/read-string x)
:else :cljs.spec.alpha/invalid))))
(s/def :data.subscription/quantity :conformers/int)
(s/def :data/subscription (s/keys :req-un [:data.subscription/quantity]))
以上是否是单调的/无意的?如果是这样,什么是合适的/惯用的用法。预期用途的边界在哪里?