2024 Clojure 状况调查! 分享您的想法。

欢迎!请访问 关于 页面,以获取更多有关这个网站如何工作的信息。

0
Spec

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

1 答案

0
by

spec.alpha 目前不支持此功能。
您可以用那个 s/and 诡计来做到这一点

在此处了解更多关于此问题的信息
https://github.com/clojure/spec-alpha2/wiki/Schema-and-select

...