假设我有以下规范
(ns example
(:require [clojure.alpha.spec :as s]))
(s/def ::val int?)
(s/def ::inner (s/schema [::val]))
(s/def ::container (s/coll-of ::inner
:into []))
(s/def ::outer (s/schema [::container]))
如何使 s/select
在 ::container
总是位于 ::outer
中并且可以为空的情况下,如果它有元素 ::val
则必须存在。
例如,以下不应是有效的
[#:example{:container [{}]}]