Accessor SYMBOL-VALUE

UP


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  

副作用

なし。

影響

makunbound, set, setq

例外

symbolがシンボルではないとき、 型type-errorのエラーが発生します。

もしsymbolunboundで、 その値を読み込もうとしたとき、 unbound-variableが通知されます。 (その値を書き込もうとしたときに発生するエラーはありません)

参考

boundp, makunbound, set, setq

備考

symbol-valueは、定数の値を取得できます。 symbol-valueは、レキシカルな変数の値にアクセスできません。


TOP, Github