7.3. インスタンスの再初期化
ジェネリック関数reinitialize-instance
は、 初期化引数に従ってスロットの値を変更するときに使用されます。
再初期化のプロセスにより、スロットの値が変更され、 ユーザーが定義するアクションが実行されます。 これはスロットの追加と削除といったインスタンスの構造の修正は行いません。 また、:initform
フォームを使ったスロットの初期化を行いません。
ジェネリック関数reinitialize-instance
は、直接呼び出されるでしょう。 これは引数に一つのインスタンスが要求されます。 またreinitialize-instance
かshared-initialize
によって使用される、 任意の数の初期化引数を受け取ります。 要求されるインスタンスの引数より後の引数は、 初期化引数リストの形式でなければなりません。
システムが提供するreinitialize-instance
のメソッドは、 特定パラメーターにstandard-object
クラスを取ります。 最初、メソッドは初期化引数の有効性をチェックし、 もし指定された初期化引数が有効であると宣言されていなかった場合は、 エラーが発せられます(詳細は7.1.2. 初期化引数の有効性の宣言を参照)。 このメソッドは、ジェネリック関数shared-initialize
を、 次に示す引数とともに呼び出します。 引数は、インスタンス、nil
、 そして受け取った初期化引数です。