Clojure 两个符号可以绑定到同一个变量吗?
在clojure,这是真的吗Clojure 两个符号可以绑定到同一个变量吗?,clojure,Clojure,在clojure,这是真的吗 (= #'x #'y) 不起作用的示例: user> (def x 1) #'user/x user> (def y x) #'user/y user> (= #'x #'y) false user> (def y #'x) #'user/y user> (= #'x #'y) false 您这样做是为了创建可变对象的单例吗?如果不是,为什么?每个def都在创建一个新的var,新的var将不等于任何其他varvar@muhu
(= #'x #'y)
不起作用的示例:
user> (def x 1)
#'user/x
user> (def y x)
#'user/y
user> (= #'x #'y)
false
user> (def y #'x)
#'user/y
user> (= #'x #'y)
false
您这样做是为了创建可变对象的单例吗?如果不是,为什么?每个def都在创建一个新的var,新的var将不等于任何其他varvar@muhuk我不想这样做。我只是想知道这是否可能,为什么不可能。@Bill如果你勾选了
(=y#'x)
,那就对了。所以我假设您对两个变量相等感兴趣。@muhuk Var的三参数构造函数指定第三个变量中的值。这正是使用两个参数调用def时所设置的值。
(refer 'clojure.core :only '[=] :rename '{= equal?})
(= #'= #'equal?)
;= true