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)