19.1 Some Fine Print
优质
小牛编辑
126浏览
2023-12-01
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
里面去。