首页 > 解决方案 > 如何指定自定义指定地图的矢量

问题描述

我有一个名为 的自定义地图的规范,::cell比方说

(s/def ::attr-1 int?)
(s/def ::attr-2 int?)
(s/def ::cell :req-un [::attr-1 ::attr-2])

::grid现在我想要一个只包含这些::cell地图的自定义矢量规范。例如,网格可能如下所示:

(let grid [{:attr-1 11, :attr-2 12} {:attr-1 21 :attr-2 22}])

是否可以使用 的规范为此要求创建规范::cell

(s/def ::grid ???)

标签: clojureclojure.spec

解决方案


您可以使用tuple

(s/def ::grid (s/tuple ::cell ::cell ::cell))

coll-of指定种类和数量:

(s/coll-of ::cell :kind vector? :count 3)

推荐阅读