9.1 符号作为抽屉式储物柜

在早期的一节中,我建议你将符号想象成一个抽屉式储物柜。一个抽屉放置函数定义,另一个抽屉放置值,依此类推。放在存放值的抽屉中的内容可以更改,而不影响放置函数定义的抽屉中的内容,反之亦然。

实际上,放在每个抽屉中的是值或函数定义的地址。就好像你在阁楼上发现了一只旧箱子,在其中一个抽屉里找到了一张地图,指引你找到埋藏的宝藏的地方。

(除了名称、符号定义和变量值之外,符号还有一个用于记录其他信息的属性列表抽屉。这里不讨论属性列表;请参阅(elisp,GNU Emacs Lisp参考手册)Property Lists。)

这里是一个幻想的表示:


            抽屉式储物柜            抽屉的内容

            __   o0O0o   __
          /                 \
         ---------------------
        |    符号名称的方向    |            [指向地图]
        |                     |             花束
        +---------------------+
        |    符号定义的方向    |
        |                     |             [无]
        +---------------------+
        |    变量值的方向      |            [指向地图]
        |                     |             (玫瑰 紫罗兰 毛茛)
        +---------------------+
        |    属性列表的方向    |             [这里不描述]
        |                     |
        +---------------------+
        |/                   \|