12.7 Доступ к значениям переменных

Обычный способ обращения к переменной — это запись символа, который ее называет. См. Формы символов.

Иногда вам может потребоваться обратиться к переменной, значение которой определяется только во время выполнения. В этом случае вы не можете указать имя переменной в тексте программы. Вы можете использовать функцию symbol-value для извлечения значения.

Функция: symbol-value symbol

Эта функция возвращает значение, хранящееся в ячейке значения symbol. В ней хранится текущее (динамическое) значение переменной. Если у переменной нет локальной привязки, это просто ее глобальное значение. Если переменная пуста, сигнализируется ошибка void-variable.

Если переменная лексически связана, значение, возвращаемое symbol-value, не обязательно совпадает с лексическим значением переменной, которое определяется лексической средой, а не ячейкой значения символа. См. Правила области видимости для привязок переменных.

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

;; Здесь символ abracadabra
;;   является символом, значение которого проверяется.
(let ((abracadabra 'foo))
  (symbol-value 'abracadabra))
     ⇒ foo

;; Здесь значение abracadabra,
;;   которое равно foo,
;;   является символом, значение которого проверяется.
(let ((abracadabra 'foo))
  (symbol-value abracadabra))
     ⇒ 9

(symbol-value 'abracadabra)
     ⇒ 5