Function INVOKE-RESTART
invoke-restart
restart &rest
arguments => result*
restart - restart
指定子
argument - オブジェクト
result - restartに関係づいた関数による返却値(もしあるなら)。
restartに関連づいた関数を引数argumentsとともに呼び出します。 restartは現在の動的環境下で有効なものでなければなりません。
defun add3 (x) (check-type x number) (+ x 3))
(
(foo '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 'store-value 7)
>> Debug> (=> 10
restart
によって非局所的な遷移の制御が行われるかもしれません。
存在するrestart
。
もしrestartが有効でないときは、 型control-error
のエラーが発生します。
find-restart
, restart-bind
, restart-case
, invoke-restart-interactively
もっとも一般的には、invoke-restart
はハンドラーの中で使用されます。 それは明示的に使用されるかもしれませんし、 または暗黙的にinvoke-restart-interactively
か restart
関数を通して使用されるかもしれません。
restart
関数はinvoke-restart
を呼び出しますし、 逆もまた成り立ちます。 これは、invoke-restart
が原始的な機能を提供しており、 restasrt
関数は本質ではない「糖衣構文」です。