そのため、LazyMatrix という名前の smalltalk で作成するクラスがあります。このクラスにはインスタンス変数が 1 つしかなく、Object 以外のサブクラスになることはできません。LazyMatrix のインスタンス変数はブロックと呼ばれ、バックでなければなりません。LazyMatrix を次のように初期化します。
initialize
block:=[nil]
値を設定する方法があります
setRow:column:value:
このメソッドは、新しいブロックを [#(ij value).[nil]] として設定することにより、ブロックを再定義します。後続の各呼び出しでは、ブロックに 3 の配列が追加されるため、[#(ij 値).[#(ij 値).[nil]]] のように展開され、s 式または「遅延リスト」によく似ています。
したがって、このブロックの先頭 (つまり [#(ij value) ) とこのブロックの末尾 (つまり [#(ij value).[nil]] ) にアクセスする必要があります。これを smalltalk で行うにはどうすればよいですか? ブロックで value を呼び出すと末尾が返されることはわかっています...今度は先頭を返す必要があります。