Prismatic-schema (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}}
マッチャーがマップに到達するとすぐに爆発するように見えますか?