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