7.2.2. 新しく追加された局所スロットの初期化

UP


7.2.2. 新しく追加された局所スロットの初期化

更新の二番目の手順では、新しく追加されたスロットを初期化し、 ユーザー定義のアクションを実行します。 このステップは、 ジェネリック関数update-instance-for-different-classによって定義されます。 ジェネリック関数update-instance-for-different-classは、 最初の更新手順が完了したあとに、change-classによって実行されます。

ジェネリック関数update-instance-for-different-classは、 change-classによって計算された引数により実行されます。 最初の引数は、更新されるインスタンスのコピーであり、 クラスCfromのインスタンスです。 このコピーは、ジェネリック関数change-classに動的エクステントとして保有されます。 二番目の引数は、change-classによって更新されるインスタンスであり、 クラスCtoのインスタンスです。残りの引数は、初期化引数リストです。

システムが提供するupdate-instance-for-different-classメソッドは、 2つの特定パラメーターがあり、 どちらもstandard-objectクラスです。 最初、このメソッドは、初期化引数の有効性をチェックし、 もし指定された初期化引数が有効であると宣言されていなかった場合は、 エラーが発せられます(詳細は7.1.2 初期化引数の有効性の宣言を参照)。 それから、このメソッドはジェネリック関数shared-initializeを、 次に示す引数とともに呼び出します。 引数は、新しいインスタンス、新しく追加されるスロット名のリスト、 そして受け取った初期化引数です。


TOP, Github