Next: Setting Variables, Previous: Tips for Defining, Up: Variables [Contents][Index]
変数を参照する通常の方法は、それに名前をつけるシンボルを記述する方法です。The usual way to reference a variable is to write the symbol which names it. Symbol Formsを参照してください。
時には、実行時にのみ決定される変数を参照したいときがあるかもしれません。そのような場合、プログラム中のテキストで、変数名を指定することはできません。その値を抽出するために、symbol-value
を使うことができます。
この関数は、symbolの値セルに格納された値をreturnします。これには、その変数の(ダイナミックな)カレント値が格納された場所です。その変数がローカルバインディングをもたない場合は、単にその変数のグローバル値になります。変数がvoidの場合、void-variable
はエラーをシグナルします。
その変数がレキシカルにバインドされている場合、symbol-value
により報告される値は、その変数のレキシカル値と同じである必要はありません。レキシカル値はそのシンボルの値セルではなく、レキシカル環境により決定されます。Variable Scopingを参照してください。
(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