1

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}}

マッチャーがマップに到達するとすぐに爆発するように見えますか?

4

1 に答える 1