# 2.4.4 符号类型

在 GNU Emcas Lisp 中，符号 (symbol) 是一个具名 (name) 对象。符号的名字就是符号的打印形式。在常规的 Lisp 实现中, 会有一个全局唯一的 obarray 来记录这些符号。在同一个 obarray 内，所有的符号都应当有自己唯一的名字。

符号可以作为变量，函数名使用，也可以用来指定一个属性列表。（）在给定的语境下, 符号通常只有其中一个用途。不过, 你完全可以同时使用它的三种用途, 它们是相互独立的.

以 ':' 开头的符号称为关键字符号, 这些符号会自动的作为常量来使用。通常只在与位置符号的比较中使用。

符号的名字可以包含任何字符。大多数的符号名字由字母，数字，以及一些标点 '-+=\*/'构成。这个样的名字不需要特殊的符号转义，只要它看起来不像数字。(如果很像数字, 那你需要在开头加上'\\', 以强制解释器把它当成符号)。 字符 '\_\~!@$%^&:<>{}?' 很少使用，不过它们也不需要转义。其他的符号则需要反斜杠转义。不过与字符串中转义的方法不同，符号名称中的反斜杠只对紧挨其后的单个字符进行引号引用。举个例子，在字符串里 '\t' 表示一个制表符; 但在符号名称中, '\t' 只是表示被引号引起来的 't'. 如果你想在符号名中中键入制表符，那你需要真的按下制表符(前面加上 '\\' 转义)。不过通常很少有人这么做。

Common Lisp note: 在 Common Lisp中, 所有的小写字母都会转换成大写字母, 除非它们被显示的转义. 但在 Emcas Lisp 中, 大写字母和小写字母本来就是独立的.

这里有几个例子。注意：第四个例子中的 '+' 被转义，不然这个表达式会被当成整数读取。在第六个例子中使用了很多标点，不过它们并不需要转义。

```
foo                 ; 一个名称为 ‘foo’ 的符号.
FOO                 ; 一个名称为 ‘FOO’ 的符号, 和上面那个 ‘foo’ 不同.
1+                  ; 一个名称为 ‘1+’ 的符号
                    ;   (不是 ‘+1’, '+1' 是个整数).
\+1                 ; 一个名称为 ‘+1’ 的符号
                    ;   (这个符号可读性不是很好).
\(*\ 1\ 2\)         ; 一个名称为 ‘(* 1 2)’ 的符号 (很糟糕的符号名).
+-*/_~!@$%^&=:<>{}  ; 一个名称为 ‘+-*/_~!@$%^&=:<>{}’ 的符号.
                    ;   这些符号不需要转义.
```

前面说过，符号的名字即为符号的打印表示，不过这里有一个例外。'##' 是一个特殊符号的打印表示，该符号被注册 (interned) 在 obarray 中，其名字为空的字符串。更进一步的说，'#:foo' 是一个未被注册 (uninterned) 在 obarray 中，且其名称为 foo 的符号的打印表示。 (正常情况下, Lisp 读取器会注册所有的符号, 详情查阅 创建符号章节)

译者注：这里 interned 被译为注册，uninterned即为未注册。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://emacs-lisp.ivory.cafe/lisp-shu-ju-lei-xing/bian-cheng-lei-xing/2.4.4-fu-hao-lei-xing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
