请教一个`symbol-value`的问题,帮忙看下这是不是一个bug?

真有这么复杂?为什么不来点OOP,这些值包装进struct。然后写个函数专门来describe这个struct?

比如

(require 'cl-lib)
(require 's)

(cl-defstruct person
  name age sex)

(defun describe-person (person)
  (pcase-let (((cl-struct person name age sex)
               person))
      (s-lex-format "\
Name: ${name}
Sex: ${sex}
Age: ${age}}")))

(describe-person (make-person :name "Alice" :age 40 :sex 'female))

那就定义构造函数,从需要计算的raw argument里构造struct.

你可以在describe函数里加入任意逻辑,或者定义多个describe函数,不同场合应用不同函数。

这种做法除了罗嗦一点,在抽象和代码复用上都是很好的选择。