% Function FIND-RESTART
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で
おそらく似たような効果を行うことができます。