Clojure 为什么符号的双向间接定向->;var->;价值

Clojure 为什么符号的双向间接定向->;var->;价值,clojure,Clojure,为什么clojure将符号映射到变量,而不是直接映射到值?符号解析为变量和变量引用值的双向间接寻址背后的想法是什么 var实际上是什么,它只是一个内存引用,还是一个做得更多的java类 文档中说,这是需要的,以便可以重新定义值,但是如果没有双向间接寻址,为什么不能重新定义值?您可以在此处找到Clojurevar机制的详细描述: 由于Clojure数据是不可变的,因此需要像var或atom这样的间接机制来允许“更改”。这有点像Java中有一个变量name,它实际上是一个指向类似Fred的字符串的指

为什么clojure将符号映射到变量,而不是直接映射到值?符号解析为变量和变量引用值的双向间接寻址背后的想法是什么

var实际上是什么,它只是一个内存引用,还是一个做得更多的java类


文档中说,这是需要的,以便可以重新定义值,但是如果没有双向间接寻址,为什么不能重新定义值?

您可以在此处找到Clojure
var
机制的详细描述:

由于Clojure数据是不可变的,因此需要像
var
atom
这样的间接机制来允许“更改”。这有点像Java中有一个变量
name
,它实际上是一个指向类似
Fred
的字符串的指针。稍后,您可以重新分配
name
以指向不同的字符串
Barney

Yes作为java类实现,并用于线程绑定、元数据、验证等。