2024 年 Clojure 状态调查! 分享您的看法。

欢迎!请参阅 关于 页面以获取更多关于如何使用本站的信息。

+2
规范
重标记

[org.clojure/clojure "1.11.0-alpha2"]
clojure.spec.alpha

重现(查看 keys 内部的 or

(s/def :x/foo int?)
(s/def :x/bar string?)

(s/form (s/keys :req-un [(or :x/foo :x/bar)]))
; => (clojure.spec.alpha/keys :req-un [(or :x/foo :x/bar)])

(s/form (s/and (s/keys :req-un [(or :x/foo :x/bar)])))
;=> (clojure.spec.alpha/and (clojure.spec.alpha/keys :req-un [(clojure.core/or :x/foo :x/bar)]))

有没有办法强制在第一个 form 中将 or 命名空间化?

1 个回答

+1

选定
 
最佳回答

或者这里只是一个在 spec 语言中被理解的符号,它不是对 clojure.core/or 函数的引用。这不是故意的,即它在 form 中没有命名空间。

by
所以在 `keys` 被与 `and` 包裹时不应有命名空间吗?
by
哦,这是正确的——我认为第二个是错误的。
...