% Macro MULTIPLE-VALUE-BIND
Macro MULTIPLE-VALUE-BIND
multiple-value-bind
(var*) values-form declaration* form*
=> result*
var - 変数名のシンボル。評価されません。
values-form - フォーム。評価されます。
declaration - 宣言式。評価されません。
form - 暗黙のprogn
result - formから返却される多値
varへの新しい変数束縛を作成し、 それらの束縛を使った一連のformを実行します。
変数の束縛は、special
宣言がされていないのであれば、
レキシカルに行われます。
values-formは評価され、
フォームによって返却されたそれぞれの値を各varに束縛します。
もしvarの方が多値より多い場合は、
残りのvarには追加でnil
が与えられます。
もし多値の方がvarより多い場合は、
超過した多値は切り捨てられます。
varは多値は、暗黙のprognとして
formが実行されているときに束縛されます。
もしvarの型宣言が指定されていたものの、
値がvarの型宣言に合った束縛ではなかった場合の結果は未定義です。
名前の束縛と宣言のスコープは、values-formは含まれていません。
(multiple-value-bind (f r)
(floor 130 11)
(list f r)) => (11 9)
なし。
なし。
(multiple-value-bind (var*) values-form form*)
== (multiple-value-call #'(lambda (&optional var* &rest #1=#:ignore)
(declare (ignore #1#))
form*)
values-form)