我把规格定义为-
(s/def ::start integer?)
(s/def ::end integer?)
(s/def ::collection (s/keys :req-un [::start ::end]))它作为(s/valid? ::collection {:start 9 :end 13})运行得很好
但现在我还必须检查start是否应该小于end。如何做到这一点?有没有更简单的方法来做到这一点,而无需创建另一个fn和检查?
发布于 2018-02-10 15:44:43
Spec的s/def定义只是谓词。您可以在::collection规范的主体中使用s/and,其中第一个条件是您当前拥有的条件,第二个条件是订单谓词:
(s/def ::ordered-collection (fn [{:keys [start end]}] (< start end)))
(s/def ::collection (s/and (s/keys :req-un [::start ::end])
::ordered-collection))https://stackoverflow.com/questions/48718308
复制相似问题