7.1.6. Initialize-Instance

UP


7.1.6. Initialize-Instance

ジェネリック関数initialize-instanceは、 新しく作成されたインスタンスを初期化するために、 make-instanceによって呼び出されます。 method-combinationはstandardが使われます。 initialize-instanceのメソッドは、 単純に初期値をスロットに指定できないような初期化を実行するために定義できます。

初期化中では、次に示したアクションを実行したあとに initialize-instanceが呼び出されます。

ジェネリック関数initialize-instanceは 新しいインスタンスとデフォルト初期化引数とともに呼び出されます。 システムが提供するinitialize-instanceのメソッドでは、 特定パラメーターはstandard-objectクラスのものが存在します。 このメソッドは、ジェネリック関数shared-initializeを呼び出し、 初期化引数に対応したものか、 あるいは:initformフォームに対応した値を設定します。 ジェネリック関数shared-initializeの引数は、 インスタンス、t、 デフォルト初期化引数を指定して呼び出されます。

注意として、initialize-instanceはデフォルト初期化引数リストを shared-initializeの呼び出し時に提供します。 そして最初のステップとして、 システムが提供するshared-initializeのメソッドは、 make-instance呼び出し時に提供された初期化引数と、 デフォルト初期化引数リストの両方を集計して呼び出されます。

initialize-instanceのメソッドは、 インスタンスの初期化時に、特定のアクションを定義することができます。 もしinitialize-instanceafterメソッドだけが定義された場合、 これらはシステムが提供した初期化後に実行されます。 したがってこれらは、initialize-instanceの標準的な動作には干渉しないでしょう。

オブジェクトシステムは、initialize-instanceメソッドの構築に 便利な2つの関数を提供しています。 関数slot-boundpは、スロットが値を持っているかどうかを示すブール値を返却します。 これはinitialize-instanceafterメソッドを記述する際に、 まだ初期化されていないスロットのみを初期化するような仕組みを提供します。 関数slot-makunboundは、スロットの値を削除します。


TOP, Github