我想创建一个类似于spec/keys的规范,但只允许在req-un和opt-un中的键。
我被告知,使用clojure.spec.alpha无法简单地实现这个功能,并且需要添加一个s/and和一个函数来检查给定键是否存在于req-un和opt-un中。
我的计划是简单地使用 spec/keys 已定义的规范创建另一个规范,因为这对我来说似乎不可能在单个规范中定义规范的完备性。因此,我希望得到以下几点
(spec/def ::person (spec/keys :req-un [::name ::age]))
(spec/def ::person-exhaustive (s/and ::person #(only-allowed-keys %))
但是,这对我来说并不明显,我注意到有一个spec/form函数,它会返回规范作为数据,但这似乎很笨拙,使用起来很麻烦。有没有更好的方法从规范中获取这些数据?