如何指定自定义指定地图的矢量
How to spec a vector of custom spec'ed maps
我有一个名为 ::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 ???)
您可以使用 tuple
:
(s/def ::grid (s/tuple ::cell ::cell ::cell))
或coll-of
指定种类和数量:
(s/coll-of ::cell :kind vector? :count 3)
我有一个名为 ::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 ???)
您可以使用 tuple
:
(s/def ::grid (s/tuple ::cell ::cell ::cell))
或coll-of
指定种类和数量:
(s/coll-of ::cell :kind vector? :count 3)