【发布时间】:2012-09-11 14:10:18
【问题描述】:
例如,如果我有原子'ABCD,有没有办法确定组成原子的各个字符?
【问题讨论】:
标签: common-lisp sbcl
例如,如果我有原子'ABCD,有没有办法确定组成原子的各个字符?
【问题讨论】:
标签: common-lisp sbcl
这些字符不是“组成原子”(原子是不同的东西;大致“不是列表”)。
你所拥有的是一个符号。一个符号有一个名称,它被引用。可以通过函数symbol-name获取符号名称:
CL-USER > (symbol-name 'ABCD)
=> "ABCD"
(请注意,symbol-name 和 ABCD 都表示符号,但 symbol-name 被评估,而 ABCD 不是由于引用——上面的读取与 (symbol-name (quote ABCD)) 相同。)
符号还有其他属性,可以通过symbol-package、symbol-plist、symbol-value或symbol-function函数获得。
如需概览,请查看chapter 10 of the Hyperspec。
【讨论】:
获取符号中的字符列表:
(coerce (string 'ABCD) 'list) ; => (#\A #\B #\C #\D)
如果您首先转换符号,则可以对符号执行任何类型的常规字符串分析:
(string 'ABCD) ; => "ABCD"
(char (string 'ABCD) 0) ; => #\A
(subseq (string 'ABCD) 0 2) ; => "AB"
【讨论】: