clojure.spec /和&clojure.spec /或
示例
clojure.spec/and&clojure.spec/or可用于使用多个规范或谓词来创建更复杂的规范:
(clojure.spec/def ::pos-odd (clojure.spec/and odd? pos?)) (clojure.spec/valid? ::pos-odd 1) ;;=> true (clojure.spec/valid? ::pos-odd -3) ;;=> false
or工作原理相似,但有很大的不同。定义or规范时,必须使用关键字标记每个可能的分支。这是为了提供在错误消息中失败的特定分支:
(clojure.spec/def ::big-or-small (clojure.spec/or :small #(< % 10) :big #(> % 100))) (clojure.spec/valid? ::big-or-small 1) ;;=> true (clojure.spec/valid? ::big-or-small 150) ;;=> true (clojure.spec/valid? ::big-or-small 20) ;;=> false
使用符合规格时or,将返回适用的规格,该规格使值符合:
(clojure.spec/conform ::big-or-small 5) ;; => [:small 5]
热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西