% Function INVOKE-RESTART
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)
>> 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 'store-value 7)
=> 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
関数は本質ではない「糖衣構文」です。