Function SET

UP


Function SET

Function SET

構文

set symbol value => value

引数と戻り値

symbol - シンボル
value - オブジェクト

定義

setは、symbolの値のセルの内容を、引数valueに変更します。

(set symbol value) ==  (setf (symbol-value symbol) value)

例文

(setf (symbol-value 'n) 1) =>  1
(set 'n 2) =>  2
(symbol-value 'n) =>  2
(let ((n 3))
  (declare (special n))
  (setq n (+ n 1))
  (setf (symbol-value 'n) (* n 10))
  (set 'n (+ (symbol-value 'n) n))
  n) =>  80
n =>  2
(let ((n 3))
  (setq n (+ n 1))
  (setf (symbol-value 'n) (* n 10))
  (set 'n (+ (symbol-value 'n) n))
  n) =>  4
n =>  44
(defvar *n* 2)
(let ((*n* 3))
  (setq *n* (+ *n* 1))
  (setf (symbol-value '*n*) (* *n* 10))
  (set '*n* (+ (symbol-value '*n*) *n*))
  *n*) =>  80
 *n* =>  2
(defvar *even-count* 0) =>  *EVEN-COUNT*
(defvar *odd-count* 0) =>  *ODD-COUNT*
(defun tally-list (list)
  (dolist (element list)
    (set (if (evenp element) '*even-count* '*odd-count*)
         (+ element (if (evenp element) *even-count* *odd-count*)))))
(tally-list '(1 9 4 3 2 7)) =>  NIL
*even-count* =>  6
*odd-count* =>  20

副作用

symbolの値が変更されます。

影響

なし。

例外

なし。

参考

setq, progv, symbol-value

備考

関数setは非推奨です。

setは、レキシカルな変数の値を変更できません。


TOP, Github