% Accessor SYMBOL-VALUE
Accessor SYMBOL-VALUE
symbol-value
symbol => value
(setf
(symbol-value
symbol) new-value)
symbol - 値を持っているシンボル
value, new-value - オブジェクト
シンボルの値のセルにアクセスします。
(setf (symbol-value 'a) 1) => 1
(symbol-value 'a) => 1
;; SYMBOL-VALUEはレキシカル変数を見れない
(let ((a 2)) (symbol-value 'a)) => 1
(let ((a 2)) (setq a 3) (symbol-value 'a)) => 1
;; SYMBOL-VALUEは動的変数を見れる
(let ((a 2))
(declare (special a))
(symbol-value 'a)) => 2
(let ((a 2))
(declare (special a))
(setq a 3)
(symbol-value 'a)) => 3
(let ((a 2))
(setf (symbol-value 'a) 3)
a) => 2
a => 3
(symbol-value 'a) => 3
(let ((a 4))
(declare (special a))
(let ((b (symbol-value 'a)))
(setf (symbol-value 'a) 5)
(values a b))) => 5, 4
a => 3
(symbol-value :any-keyword) => :ANY-KEYWORD
(symbol-value 'nil) => NIL
(symbol-value '()) => NIL
;; 次の値の精度は実装依存
(symbol-value 'pi) => 3.141592653589793d0
なし。
symbolがシンボルではないとき、
型type-error
のエラーが発生します。
もしsymbolがunbound
で、
その値を読み込もうとしたとき、
unbound-variable
が通知されます。
(その値を書き込もうとしたときに発生するエラーはありません)
boundp
,
makunbound
,
set
,
setq
symbol-value
は、定数の値を取得できます。
symbol-value
は、レキシカルな変数の値にアクセスできません。