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

欢迎!请参阅 关于 页面以了解此如何运作的更多信息。

+2
Spec
重新标记

[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)]))

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

1 答案

+1

选中
 
最佳回答

或者这里只是一个在 spec 的语言中理解的符号,它并不是对 clojure.core/or 函数的引用。在形式上不命名空间是其故意为之。

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