変数を参照する一般的な方法は、その変数名となる記号を記述することです。記号形式を参照してください。
実行時に初めて決定される変数を参照したい場合があります。その場合、プログラムの本文中で変数名を指定することはできません。symbol-value関数を使用して値を抽出できます。
この関数は、symbolの値セルに格納されている値を返します。ここには、変数の現在の(動的な)値が格納されています。変数にローカルバインディングがない場合は、単にそのグローバル値となります。変数がvoid型の場合、void-variableエラーが通知されます。
変数が字句的に束縛されている場合、symbol-value
が返す値は必ずしもその変数の字句値と一致するとは限りません。字句値は、シンボルの値セルではなく、字句環境によって決定されます。変数束縛のスコープ規則を参照してください。
(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 ofabracadabra, ;; which isfoo, ;; is the symbol whose value is examined. (let ((abracadabra 'foo)) (symbol-value abracadabra)) ⇒ 9
(symbol-value 'abracadabra)
⇒ 5