Macro MULTIPLE-VALUE-SETQ
multiple-value-setq
vars form => result
vars - 変数名かシンボルマクロ名どちらかのシンボルのリスト
form - フォーム
result - formの第一返却値
multiple-value-setq
は、varsに値を代入します。
formは評価され、 フォームによって返却されたそれぞれの値を各varに代入します。 もしvarの方が多値より多い場合は、 残りのvarにはnil
が代入されます。 もし多値の方がvarより多い場合は、 超過した多値は切り捨てられます。
もしvarがシンボルマクロの名前であったときは、 setf
として代入されます。 とくに下記のような場合、
multiple-value-setq (symbol1 ... symboln) value-producing-form) (
常に下記のような動作と同じであると定義されます。
values (setf (values symbol1 ... symboln) value-producing-form)) (
これらの評価と副作用の順序の規則はsetf
を使用したものと同じです。 5.1.2.3. place
としてのVALUESフォームをご確認ください。
multiple-value-setq (quotient remainder) (truncate 3.2 2)) => 1
(=> 1
quotient => 1.2
remainder multiple-value-setq (a b c) (values 1 2)) => 1
(=> 1
a => 2
b => NIL
c multiple-value-setq (a b) (values 4 5 6)) => 4
(=> 4
a => 5 b
なし。
なし。
なし。
なし。