Function INVOKE-RESTART-INTERACTIVELY

UP


Function INVOKE-RESTART-INTERACTIVELY

Function INVOKE-RESTART-INTERACTIVELY

構文

invoke-restart-interactively restart => result*

引数と戻り値

restart - restart指定子
result - restartに関係づいた関数による返却値(もしあるなら)。

定義

invoke-restart-interactivelyは、 restartに関連づいた関数を呼び出し、 呼び出しに必要な引数はプロンプトによって問い合わせます。 restartは現在の動的環境下で有効なものでなければなりません。

invoke-restart-interactivelyは、 引数の問い合わせを restart-case:interactiveキーワードか、 restart-bind:interactive-functionキーワードで 提供されたコードを実行することで行います。

もしそのようなオプションが 対応するrestart-bindrestart-caseに 指定されなかったときは、 もしrestartが要求引数を取っていたときの結果は未定義です。 もし引数がオプションであるときは、 リストのnilが使用されます。

いったん引数が決定すると、 invoke-restart-interactivelyは 次のように実行を行います。

(apply #'invoke-restart restart arguments)

例文

(defun add3 (x) (check-type x number) (+ x 3))

(add3 'seven)
>>  Error: The value SEVEN was not of type NUMBER.
>>  To continue, type :CONTINUE followed by an option number:
>>   1: Specify a different value to use.
>>   2: Return to Lisp Toplevel.
>>  Debug> (invoke-restart-interactively 'store-value)
>>  Type a form to evaluate and use: 7
=>  10

副作用

もし必要な引数の問い合わせが生じると、 キーボードなどのタイプによる入力が生じます(query-io上で)。

restartによって非局所的な遷移の制御が行われるかもしれません。

影響

*query-io*

有効なrestart

例外

restartが有効なものでないときは、 型control-errorのエラーが生じます。

参考

find-restart, invoke-restart, restart-case, restart-bind

備考

invoke-restart-interactivelyは デバッガーの内部で使用されますし、 他の移植可能な対話式デバッグツールが実装されて、 使用されるかもしれません。


TOP, Github