Zacząłem uczyć się programowania prototypowego w Lua. Zastanawiam się, jakie jest użycie metatabeli bez metametodów. W przykładzie poniżej jest linia self .__ index = self kiedy usuwam tę linię somevalue nie jest widoczny w moim nowym obiekcie jest to normalne, ponieważ nie użyłem metamethod __index. Jakie jest zatem użycie metatabeli - aby użyć tylko metametodów? Przepraszam za trywialne pytanie, ale to jest naprawdę ciekawe, wiem, że mogę użyć getmetatable do sprawdzenia metatable jakiegoś obiektu. Potrzebuję prostej odpowiedzi: nie ma użycia bez metametodów lub istnieje (jeśli tak, to co).Co używa metatabeli bez metametodów?
-- 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?