この第1版はLua 5.0向けに執筆されました。以降のバージョンと大差はありませんが、若干の違いがあります。
第4版はLua 5.3を対象とし、Amazonやその他の書店からご購入いただけます。
書籍をご購入いただくことで、Luaプロジェクトのサポートにもご協力いただけます。


13.4.2 – __newindex メタメソッド

__newindex メタメソッドは、テーブルへのアクセスで __index が行うことを、テーブルの更新に対して行います。テーブル内の存在しないインデックスに値を代入すると、インタープリタは __newindex メタメソッドを探します。メタメソッドが見つかった場合、インタープリタは代入を行うのではなくそのメタメソッドを呼び出します__index と同様に、メタメソッドがテーブルの場合、インタープリタは元のテーブルではなく、そのテーブル内で代入を行います。さらに、メタメソッドをバイパスできる raw 関数が用意されています。rawset(t, k, v) の呼び出しは、メタメソッドを呼び出さずにテーブル t のキー k に値 v を設定します。

__index__newindex メタメソッドを組み合わせると、読み取り専用テーブルから初期値を持つテーブル、オブジェクト指向プログラミング用の継承に至るまで、Luaで強力な構成を作成できます。本章の後の部分では、そのような活用方法の一部を検討します。オブジェクト指向プログラミングについては、独自にあるチャプターが用意されています。