我正在尝试使用棱柱模式(1.0.4)强制地图
我试图强迫
{:a 1}
至
{:b 1}
使用带有模式的自定义匹配器:
{:b s/Int}
但是这段代码不起作用:
(require '[schema.core :as s])
(require '[schema.coerce :as coerce])
((coerce/coercer {:b s/Int}
(fn [s]
(when (= s s/Keyword)
(fn [x]
(if (= x :a)
:b
x)))))
{:a 1})
输出:
#schema.utils.ErrorContainer{:error {:b missing-required-key, :a disallowed-key}}
我尝试通过运行以下代码来调试它,该代码匹配架构中的所有内容并输出当前值和匹配的架构:
((coerce/coercer {:b s/Int}
(fn [s]
(when true
(fn [x]
(println s x)
x))))
{:a 1})
输出:
{:b Int} {:a 1}
=>
#schema.utils.ErrorContainer{:error {:b missing-required-key, :a disallowed-key}}
看起来匹配器一到地图就爆炸了?