Tôi bắt đầu học lập trình dựa trên Prototype tại Lua. Tôi tự hỏi những gì đang sử dụng metatables mà không metamethods. Có một dòng ở ví dụ dưới đây tự .__ index = tự khi tôi xóa dòng này somevalue không hiển thị trong đối tượng mới của tôi, điều này là bình thường vì tôi không sử dụng metamethod __index. Vậy thì việc sử dụng metatables là gì - chỉ sử dụng metamethods? Xin lỗi cho câu hỏi tầm thường nhưng điều này thực sự thú vị, tôi biết tôi có thể sử dụng getmetatable để kiểm tra metatable của một số đối tượng. Tôi cần câu trả lời đơn giản: Không có sử dụng mà không có metamethods hoặc có (nếu có thì những gì).Whats việc sử dụng metatables mà không metamethods?
-- Example taken from the official documentation.
Account = { somevalue = 1 }
function Account:new (o)
o = o or {} -- create object if user does not provide one
setmetatable(o, self)
--self.__index = self
return o
end
a = Account:new()
print(a.somevalue) -- nil, so I can't use any features of the metatable till I use some metamethod?