-- __index イベントは、テーブルの値を参照したのに値がなかったときに適用される。 -- テスト用のメタメソッドを定義する。 function testMethod(t, k) return tostring(t)..", k: "..k end -- メタテーブルをセットする。 testTable = setmetatable({aaa = 999}, {__index = testMethod}) -- 確認してみる。 -- testTable.aaa を参照したときは、元のテーブル ({aaa = 999} のこと) に値があるので、参照したとおりの値が返ってくる。 -- testTable.bbb を参照したときは、元のテーブル ({aaa = 999} のこと) を探しても値が見つからないので、testMethod(testTable, "bbb") が実行される。 print(testTable.aaa) print(testTable.bbb)
参考: