首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个等级值Clojure.spec

比较两个等级值Clojure.spec
EN

Stack Overflow用户
提问于 2018-02-10 15:22:04
回答 1查看 349关注 0票数 1

我把规格定义为-

代码语言:javascript
复制
(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和检查?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-10 15:44:43

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

代码语言:javascript
复制
(s/def ::ordered-collection (fn [{:keys [start end]}] (< start end)))

(s/def ::collection (s/and (s/keys :req-un [::start ::end])
                           ::ordered-collection))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48718308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档