12.7 访问变量值

引用变量的常规方式是书写其对应的符号名称。See 符号形式

偶尔你可能需要引用一个仅在运行时才能确定的变量,这种情况下无法在程序代码中直接指定变量名,此时可以使用 symbol-value 函数来获取其值。

Function: symbol-value symbol

该函数返回存储在 symbol 值域(value cell)中的值,变量当前的(动态)值就存储在这里。如果该变量没有局部绑定,返回的就是其全局值;如果变量为空(void),则会触发 void-variable 错误。

如果变量是词法绑定的,那么 symbol-value 返回的值不一定等于该变量的词法值。词法值由词法环境决定,而非由符号的值域(value cell)决定。See Scoping 变量绑定的作用域规则

(setq abracadabra 5)
     ⇒ 5
(setq foo 9)
     ⇒ 9

;; Here the symbol abracadabra
;;   is the symbol whose value is examined.
(let ((abracadabra 'foo))
  (symbol-value 'abracadabra))
     ⇒ foo

;; Here, the value of abracadabra,
;;   which is foo,
;;   is the symbol whose value is examined.
(let ((abracadabra 'foo))
  (symbol-value abracadabra))
     ⇒ 9

(symbol-value 'abracadabra)
     ⇒ 5
emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike