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

欢迎!请在关于页面查看更多关于如何使用本站的信息。

0
ClojureScript

clojure.core 中存在bound?函数。

我在cljs.core中看不到这个函数或类似的。

这是因为什么?有没有替代功能?

1 个回答

+1

选定
 
最佳回答

很可能是因为ClojureScript没有Var。def直接使用JS变量,因此没有Clojure中的Var,这意味着没有根值,没有线程本地变量,也没有未绑定的Var,这意味着我们不需要bound?函数。

因此,在ClojureScript中,你可以假设你的定义始终是已绑定的,如果没有指定值,默认为nil。

因此,以某种方式,尽管它并不完全相同,你仍然可以使用some?。

In ClojureScript

(def a)
(some? @#'a)
=> false

请注意,some?检查值,所以你需要解引用或者直接使用该值,比如

(some? a)
=> false

In Clojure

(def a)
(bound? #'a)
=> false

然而,请注意

(def a nil)
(some? a)
=> false

以及

(def a nil)
(bound? #'a)
=> true

这就是为什么它并不完全相同的原因。

...