npt-japanese

% Macro MULTIPLE-VALUE-SETQ

UP


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

副作用

なし。

影響

なし。

例外

なし。

参考

setq, symbol-macrolet

備考

なし。


TOP, Github