Macro MULTIPLE-VALUE-BIND

UP


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)

影響

なし。

例外

なし。

参考

let, multiple-value-call

備考

(multiple-value-bind (var*) values-form form*)
==  (multiple-value-call #'(lambda (&optional var* &rest #1=#:ignore)
                            (declare (ignore #1#))
                            form*)
                        values-form)

TOP, Github