% Macro MULTIPLE-VALUE-SETQ
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
quotient => 1
remainder => 1.2
(multiple-value-setq (a b c) (values 1 2)) => 1
a => 1
b => 2
c => NIL
(multiple-value-setq (a b) (values 4 5 6)) => 4
a => 4
b => 5
なし。
なし。
なし。
なし。