Clojure2024状态调查中分享你的想法!

欢迎!请查看关于页面以了解更多关于此功能的信息。

0 投票
规范

我想创建一个类似于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函数,它会返回规范作为数据,但这似乎很笨拙,使用起来很麻烦。有没有更好的方法从规范中获取这些数据?

1 答案

0 投票

spec.alpha 目前不支持此操作。
您可以使用s/and技巧来实现这一点

更多相关信息请查看这里
https://github.com/clojure/spec-alpha2/wiki/Schema-and-select

...