企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### Some Fine Print `Symbol` 对象有一个 `String` 类型的名字以及一个 `String` 类型的名字空间名字(叫做 `ns` ), 但是没有值。它使用一个字符串的名字空间而不是一个名字空间对象使得它可以指向一个还不存在的名字空间。 `Var` 对象有一个执行 `Symbol` 对象的引用 (叫做 `sym` ), 一个指向 `Namespace` 对象的引用 (叫做 `ns` ) 以及一个 `Object` 类型的对象(也就是它的root value, 叫做 `root` ). `Namespace` 对象bjects有一个指向 `Map` 的引用, 这个map维护 `Symbol` 对象和 `Var` 对象的对应关系 (叫做 `mappings` )。同时它还有一个map来维护 `Symbol` 别名和 `Namespace` 对象之间的关系 (叫做 `namespaces` ). 下面这个类图显示了Java里面的类和接口在Clojure里面的实现。在Clojure里面 "interning" 这个单词一般指的是添加一个 `Symbol` 到 `Var` 的对应关系到一个 `Namespace` 里面去。 ![class diagram](https://box.kancloud.cn/2016-05-04_5729b1324c311.png)