比较两个规格值Clojure.spec

时间:2018-02-10 07:22:04

标签: clojure clojure.spec

我已将规格定义为 -

const D

它正常工作volatile D

但现在我还必须检查const volatile D是否应该小于(s/def ::start integer?) (s/def ::end integer?) (s/def ::collection (s/keys :req-un [::start ::end])) 。怎么做?有没有更简单的方法来创建另一个fn并检查?

1 个答案:

答案 0 :(得分:1)

Spec的s/def定义只是谓词。您可以在s/and规范的正文中使用::collection,其中第一个条件是您当前的条件,第二个条件是订单谓词:

(s/def ::ordered-collection (fn [{:keys [start end]}] (< start end)))

(s/def ::collection (s/and (s/keys :req-un [::start ::end])
                           ::ordered-collection))