【发布时间】:2017-02-26 12:24:07
【问题描述】:
我希望表示一系列字符串集合。内部集合应具有相同的长度。
我最初的尝试是这样的
(s/def ::stuff (s/every (s/coll-of string?) :min-count 1))
但是当我练习这个时,我会得到不同长度的内部集合。
是否有一种声明方式来指定长度应该全部相同?还是只能在规范的自定义生成器函数中指定?
【问题讨论】:
标签: clojure clojure.spec
我希望表示一系列字符串集合。内部集合应具有相同的长度。
我最初的尝试是这样的
(s/def ::stuff (s/every (s/coll-of string?) :min-count 1))
但是当我练习这个时,我会得到不同长度的内部集合。
是否有一种声明方式来指定长度应该全部相同?还是只能在规范的自定义生成器函数中指定?
【问题讨论】:
标签: clojure clojure.spec
我会将规范声明为类似
(s/def ::stuff
(s/and
(s/every (s/coll-of string?))
#(or (empty? %)
(apply = (map count %)))))
这很可能会生成,但是您将获得的大多数东西要么是一个空集合,要么是一个元素的集合,它们都可以轻松通过长度限制。为此,您需要一个自定义生成。
【讨论】: