Обычный способ обращения к переменной — это запись символа, который ее называет. См. Формы символов.
Иногда вам может потребоваться обратиться к переменной, значение которой определяется только во время выполнения. В этом случае вы не можете указать имя переменной в тексте программы. Вы можете использовать функцию symbol-value для извлечения значения.
Эта функция возвращает значение, хранящееся в ячейке значения 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