gauche.parameter
- パラメータ(レガシー) ¶このモジュールは後方互換性のためだけに提供されています。 このモジュールを使うことはできるだけ避けてください。
パラメータは組み込みになったので、パラメータの基本機能を使うだけなら
このモジュールをuse
する必要はありません。
ただ、組み込みのパラメータは従来のGaucheのパラメータと若干異なる動作をします。
このモジュールのパラメータは以前のものと互換なので、古いコードをそのまま
動かすことができます。
このモジュールをuseした場合、次の2つの識別子が互換性のあるものに再束縛されます。
make-parameter
これはmake-legacy-parameter
の別名となります。
parameterize
これはparameterize/dynwind
の別名となります。
新旧パラメータの違いについて詳しくは see パラメータと動的状態を参照してください。
旧パラメータはまた、オブザーバという、パラメータの値が変わる時に 呼ばれるコールバックを登録することができました。下のAPIはそのためのものです。
オブザーバは旧パラメータのみに付加できます。 この機能はいずれ取り除く予定なので、新規コードでは使わないようにしてください。
{gauche.parameter
}
Deprecated.
procをパラメータpの“オブザーバ”手続きに追加します。
オブザーバ手続きは、(1)パラメータに新しい値がセットされる直前、
あるいは(2)パラメータに新しい値がセットされた直後、に呼ばれます。
(1)の場合、コールバックが呼ばれる前にフィルタ手続きがすでに適用
されています。どちらの場合も、オブザーバ手続きは、古い値と新しい
値の2引数を伴って呼ばれます。オブザーバ手続きの戻り値は無視されます。
オプショナル引数whenは、シンボルbefore
かafter
の
いずれかでなければならず、値が変更された前と後のどちらでprocが
呼ばれるかを指定します。省略されると、after
を指定したものと
されます。
オプショナル引数whereは、シンボルappend
かprepend
の
いずれかでなければならず、procが既存のオブザーバ手続きのリストの
前に追加されるか後に追加されるかを指定します。省略されると、append
を指定したものとされます。
注意: パラメータの値自身がスレッドローカルであっても、 オブザーバのリストは全てのスレッドで共有されます。
{gauche.parameter
}
Deprecated.
パラメータpのオブザーバ手続きのリストからprocを削除します。
procがリストになければ、何も起こりません。
when引数にシンボルbefore
かafter
を与えて、
procをどちらのリストから削除するかを指定することができます。
when引数が省略されると、procは両方のリストから削除されます。
{gauche.parameter
}
Deprecated.
“before”か“after”オブザーバをそれぞれキープするフックオブジェクト
(gauche.hook
- フック参照)を返します。
注意: パラメータの値自身がスレッドローカルであっても、 オブザーバのリストは全てのスレッドで共有されます。