假设我有以下规范
(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 [{}]}]