【问题标题】:In Common Lisp (SBCL), is there a way to examine the individual parts of an atom?在 Common Lisp (SBCL) 中,有没有办法检查原子的各个部分?
【发布时间】:2012-09-11 14:10:18
【问题描述】:

例如,如果我有原子'ABCD,有没有办法确定组成原子的各个字符?

【问题讨论】:

    标签: common-lisp sbcl


    【解决方案1】:

    这些字符不是“组成原子”(原子是不同的东西;大致“不是列表”)。

    你所拥有的是一个符号。一个符号有一个名称,它被引用。可以通过函数symbol-name获取符号名称:

    CL-USER > (symbol-name 'ABCD)
    => "ABCD"
    

    (请注意,symbol-nameABCD 都表示符号,但 symbol-name 被评估,而 ABCD 不是由于引用——上面的读取与 (symbol-name (quote ABCD)) 相同。)

    符号还有其他属性,可以通过symbol-packagesymbol-plistsymbol-valuesymbol-function函数获得。

    如需概览,请查看chapter 10 of the Hyperspec

    【讨论】:

      【解决方案2】:

      获取符号中的字符列表:

      (coerce (string 'ABCD) 'list) ; => (#\A #\B #\C #\D)
      

      如果您首先转换符号,则可以对符号执行任何类型的常规字符串分析:

      (string 'ABCD)                ; => "ABCD"
      (char (string 'ABCD) 0)       ; => #\A
      (subseq (string 'ABCD) 0 2)   ; => "AB"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-21
        • 2016-10-27
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多