使用表作為元方法
一些 metamethods 不一定是函式。最重要的例子是 __index
元方法。它也可以是一個表,然後用作查詢。這在 lua 中建立類時非常常用。這裡,一個表(通常是 metatable 本身)用於儲存類的所有操作(方法):
local meta = {}
-- set the __index method to the metatable.
-- Note that this can't be done in the constructor!
meta.__index = meta
function create_new(name)
local self = { name = name }
setmetatable(self, meta)
return self
end
-- define a print function, which is stored in the metatable
function meta.print(self)
print(self.name)
end
local obj = create_new("Hello from object")
obj:print()