在前面的小节中,我曾建议你可以把符号想象成 一个抽屉柜。函数定义放在一个 抽屉里,变量值放在另一个抽屉里,以此类推。存放变量值的抽屉里的内容 可以被修改,而不会影响存放函数定义的抽屉里的内容, 反之亦然。
实际上,每个抽屉里存放的都是值或 函数定义的地址。这就好比你在阁楼里发现一个旧柜子, 在其中一个抽屉里找到一张地图,上面标注着埋藏宝藏的位置。
(符号除了拥有名称、定义和变量值之外,还有一个抽屉用于存放 属性列表(property list),可用于记录其他信息。 属性列表不在此处讨论;详见 Property Lists in The GNU Emacs Lisp Reference Manual。)
下面是一个形象的示意:
Chest of Drawers Contents of Drawers
__ o0O0o __
/ \
---------------------
| directions to | [map to]
| symbol name | bouquet
| |
+---------------------+
| directions to |
| symbol definition | [none]
| |
+---------------------+
| directions to | [map to]
| variable value | (rose violet buttercup)
| |
+---------------------+
| directions to |
| property list | [not described here]
| |
+---------------------+
|/ \|