Function FIND-RESTART
find-restart identifier &optional condition
=> restart
identifier - nilではなシンボルか、restart
condition - コンディションオブジェクトか、nil
restart - restartか、nil
find-restartは、現在の動的環境下で特定のrestartを探します。
もしconditionがnilではないときは、 それらのrestartは、明にconditionと関連付けられているものか、 あるいはどのコンディションにも関連付けられてないものかの どちらかのみが集められます。 これは、排他されたrestartというのは、 関連付けられたコンディションの集合が空ではなく、 その要素に指定したconditionが含まれていないということです。 もしconditionがnilのときは、 全てのrestartが集められます。
identifierがシンボルのとき、 もっとも内側(より最近確立されたもの)の その名前の適用可能なrestartが返却されます。 そのようなrestartがない場合はnilです。
もしidentifierが現在の有効なrestartのときは、 それが返却されます。 そうでないときはnilが返却されます。
(restart-case
(let ((r (find-restart 'my-restart)))
(format t "~S is named ~S" r (restart-name r)))
(my-restart () nil))
>> #<RESTART 32307325> is named MY-RESTART
=> NIL
(find-restart 'my-restart)
=> NILなし。
存在するrestart
restart-case, restart-bind, with-condition-restarts
なし。
(find-restart identifier)
== (find identifier (compute-restarts) :key :restart-name)匿名のrestartはnilという名前ですが、 identifierにnilを指定したときの結果は未定義です。 たまにプログラマーはidentifierの引数に nilは許されないと主張します。 そのような場合、compute-restartsで おそらく似たような効果を行うことができます。