我想为地图创建一个 clojure 规范,该地图具有有关特定键存在的规则。
地图必须有一个:type并且可以有一个:default或:value两个但不能同时有。我试过:
(s/def ::propertyDef
(s/keys :req [::type (s/or ::default ::value) ] :opt [::description ::required]))
Run Code Online (Sandbox Code Playgroud)
但我得到了
CompilerException java.lang.AssertionError: Assert failed:
spec/or expects k1 p1 k2 p2..., where ks are keywords
(c/and (even? (count key-pred-forms)) (every? keyword? keys)),
compiling:(C:\Users\MartinRoberts\AppData\Local\Temp\form-init4830956164341520551.clj:1:22)
Run Code Online (Sandbox Code Playgroud)
但是or给了我一个错误,因为它的格式错误。我不得不承认并没有真正理解s/or.