Next: 変数の値のセット, Previous: 堅牢な変数定義のためのヒント, Up: 変数 [Contents][Index]
変数を参照する通常の方法は、それに名前をつけるシンボルを記述する方法です。シンボルのフォームを参照してください。
実行時にのみ決定される変数を参照したいときがあるかもしれません。そのような場合、プログラム中のテキストで変数名を指定することはできません。そのような値を抽出するためにsymbol-valueを使うことができます。
この関数はsymbolの値セルに格納された値をリターンする。これはその変数の(ダイナミックな)カレント値が格納された場所である。その変数がローカルバインディングをもたなければ単にその変数のグローバル値になる。変数がvoidなら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