この第1版はLua 5.0向けに執筆されました。以降のバージョンと大差はありませんが、若干の違いがあります。
第4版はLua 5.3を対象とし、Amazonやその他の書店からご購入いただけます。
書籍をご購入いただくことで、Luaプロジェクトのサポートにもご協力いただけます。
![]() |
プログラミング inLua | ![]() |
パート 2. テーブルとオブジェクト チャプター 13. メタテーブルとメタメソッド |
__newindex
メタメソッド__newindex
メタメソッドは、テーブルへのアクセスで __index
が行うことを、テーブルの更新に対して行います。テーブル内の存在しないインデックスに値を代入すると、インタープリタは __newindex
メタメソッドを探します。メタメソッドが見つかった場合、インタープリタは代入を行うのではなくそのメタメソッドを呼び出します。 __index
と同様に、メタメソッドがテーブルの場合、インタープリタは元のテーブルではなく、そのテーブル内で代入を行います。さらに、メタメソッドをバイパスできる raw 関数が用意されています。rawset(t, k, v)
の呼び出しは、メタメソッドを呼び出さずにテーブル t
のキー k
に値 v
を設定します。
__index
と __newindex
メタメソッドを組み合わせると、読み取り専用テーブルから初期値を持つテーブル、オブジェクト指向プログラミング用の継承に至るまで、Luaで強力な構成を作成できます。本章の後の部分では、そのような活用方法の一部を検討します。オブジェクト指向プログラミングについては、独自にあるチャプターが用意されています。
Copyright © 2003–2004 Roberto Ierusalimschy. All rights reserved. | ![]() |