Я спросил ранее, почему мои методы для метатаблицы не были обнаружены 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()