【发布时间】:2019-04-08 06:11:11
【问题描述】:
* 正则表达式运算符:检查 0 个或多个谓词/模式,如下所示:
(s/def ::seq-of-keywords (s/* keyword?))
;; opts are alternating keywords and booleans
(s/def ::opts (s/* (s/cat :opt keyword? :val boolean?)))
(s/conform ::opts [:silent? false :verbose true])
;;=> [{:opt :silent?, :val false} {:opt :verbose, :val true}]
但据我了解,s/cat 检查一个序列。
那么为什么(s/* (s/cat)) 不用于检查每个都符合(s/cat) 的序列。
类似这样的:
(s/conform ::opts [[:silent? false] [:verbose true]])
为什么它表现得像s/* flattened s/cat?或者如何检查[[:silent? false] [:verbose true]] 之类的内容?
【问题讨论】:
标签: clojure clojure.spec