For Development HEAD DRAFTSearch (procedure/syntax/module):

9.13 gauche.hook - フック

Module: gauche.hook

フックオブジェクトを提供します。これは、特定のタイミングで 呼び出されるクロージャのリストを管理するものです。

フックのAPIはGuileのそれと上方互換で、下記のように拡張されています。

  • Gaucheのオブジェクトシステムをベースにしています。 ほとんどのAPIはメソッドなので、フックの機能を拡張することが できます。
  • フックオブジェクトはそれ自身適用可能です。run-hookを使う必要は ありません。
  • フックから手続きを削除するメソッドは、SRFI-1やその他との一貫性の ためにdelete-hook!と呼ばれます。 Guileとの互換性のために、remove-hook!delete-hook!の エイリアスとして定義されています。

ポータブルなコードを書いているなら、SRFI-173が基本的なフック機能を 提供しています (srfi.173 - フック(srfi)参照)。

Class: <hook>

{gauche.hook} フックのクラスで、一度に呼び出される手続きのリストを保持しています。

<hook>クラスにはobject-applyメソッドが定義されているので、 あたかもそれが手続きであるかのようにフックオブジェクトを“適用”できます。 フックオブジェクトを適用すると、登録されている全ての手続きが呼び出されます。

Function: make-hook :optional (arity 0)

{gauche.hook} 与えられたアリティ(正の整数でなければなりません)とともに新しい フックオブジェクトを作成します。

Function: hook? obj

{gauche.hook} objがフックオブジェクトであれば、真を返します。

Function: hook-empty? hook

{gauche.hook} hookの手続きリストが空なら、真を返します。

Method: add-hook! (hook <hook>) proc :optional (append? #f)

{gauche.hook} 手続きprochookに追加します。 append?が与えられ真であれば、procはリストの最後に 追加されます。そうでなければ、procはリストの最初に追加 されます。 procは、make-hook時に与えられたアリティとともに 呼ばれなければなりません。

Method: delete-hook! (hook <hook>) proc
Method: remove-hook! (hook <hook>) proc

{gauche.hook} hookの手続きリストからprocを削除します。 Guileとの互換性のためだけに、remove-hook!delete-hook!の エイリアスとなっています。

Method: reset-hook! (hook <hook>)

{gauche.hook} hookの手続きリストを空にします。

Method: hook->list (hook <hook>)

{gauche.hook} hookの手続きリストのコピーを返します。

Method: run-hook (hook <hook>) arg …

{gauche.hook} hookの手続きを、arg …を引数として順番に呼び出します。 引数の数は、make-hook時に与えられたアリティにマッチしなければ なりません。



For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT