TI-Nspire & Lua / スクリプティングのヒント / メタテーブルを使う 4 / __index

-- __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)

f:id:ti-nspire:20170211164658p:plain
 
参考: