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-bind
とrestart-case
に 指定されなかったときは、 もしrestart
が要求引数を取っていたときの結果は未定義です。 もし引数がオプションであるときは、 リストのnil
が使用されます。
いったん引数が決定すると、 invoke-restart-interactively
は 次のように実行を行います。
apply #'invoke-restart restart arguments) (
defun add3 (x) (check-type x number) (+ x 3))
(
(add3 'seven)not of type NUMBER.
>> Error: The value SEVEN was continue, type :CONTINUE followed by an option number:
>> To 1: Specify a different value to use.
>> 2: Return to Lisp Toplevel.
>> invoke-restart-interactively 'store-value)
>> Debug> (and use: 7
>> Type a form to evaluate => 10
もし必要な引数の問い合わせが生じると、 キーボードなどのタイプによる入力が生じます(query-io
上で)。
restart
によって非局所的な遷移の制御が行われるかもしれません。
有効なrestart
restartが有効なものでないときは、 型control-error
のエラーが生じます。
find-restart
, invoke-restart
, restart-case
, restart-bind
invoke-restart-interactively
は デバッガーの内部で使用されますし、 他の移植可能な対話式デバッグツールが実装されて、 使用されるかもしれません。