【发布时间】:2019-11-11 07:43:08
【问题描述】:
我想为具有键 :rule/children 或具有两个键 - :condition/field 和 :condition/predicate 的映射编写规范。这是我尝试过的:
(s/keys :req [(s/or :children :rule/children :condition (s/and :condition/field :condition/predicate))])
它会导致错误消息:
Caused by: java.lang.AssertionError: Assert failed: all keys must be namespace-qualified keywords
(every? (fn* [p1__1917#] (c/and (keyword? p1__1917#) (namespace p1__1917#))) (concat req-keys req-un-specs opt opt-un))
我知道对于s/or,每个路径都必须命名。这里有两条路径 - 此地图可以有 :children 或 :condition。只有具有:condition/field 和:condition/predicate 两个键时,它才是一个条件。
【问题讨论】:
标签: clojure clojure.spec