前に、メタテーブルのメソッドが Lua によって検索されない理由を尋ねたところ、メタテーブルに設定__index
することで問題が解決すると言われました。しかし、インデックスブラケット[
と]
メタ__index
テーブルを使用する必要があるため、その中のテーブルからインデックスを返すように割り当てられているため、メソッドを使用して両方の機能のニーズを解決するにはどうすればよいですか?割り出しブラケット
問題を示す最小限の例を書きました。
TestMetatable = {DataTable = {}}
TestMetatable.__index = TestMetatable
function TestMetatable.new()
local Tmp = {}
setmetatable(Tmp,TestMetatable)
Tmp.DataTable = {1}
return Tmp
end
function TestMetatable:TestMethod()
print("Ran Successfully")
end
function TestMetatable.__index(self,index)
return self.DataTable[index]
end
local Test = TestMetatable.new()
-- both functionalities are needed
print(Test[1])
Test:TestMethod()