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

有办法强制在第一个`form`中将`or`置于命名空间内吗?

1 答案

+1

被选中
 
最佳答案

或者这里只是一个在spec语言中可理解的符号,它不是指向clojure.core/or函数的引用。在形式中不使用命名空间是有意的。

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