не может проверять значения со строковыми ключами на карте с использованием библиотеки схем clojure

Я попытался проверить карту, используя библиотеку prismatic/schema для clojure. вот моя форма

(require '[schema.core :as s])
(def d {"a" s/Str "b" s/Int})

Когда я попытался проверить его на карте, он выдает следующее исключение

(s/validate d {"a" "@@#$" "b" 2})
RuntimeException More than one non-optional/required key schemata: ["a" "b"]  schema.core/find-extra-keys-schema (core.clj:705)

Я делаю что-то не так, или библиотека схем не может проверить соответствие строковым ключам?


person draklor40    schedule 14.10.2015    source источник


Ответы (1)


Вы должны использовать

(def d {(s/required-key "a") s/Str (s/required-key "b") s/Int})

Только при использовании ключевых слов в качестве ключей можно опустить required-key.

example=> (def d {(s/required-key "a") s/Str (s/required-key "b") s/Int})
#'schema-examples/d
example=> (s/validate d {"a" "@@#$" "b" 2})
{"a" "@@#$", "b" 2}
examples=>
person sloth    schedule 14.10.2015