Ich fing an, Prototyp-basierte Programmierung in Lua zu lernen. Ich frage mich, wie Metatabellen ohne Metamethoden verwendet werden. Es gibt eine Zeile im Beispiel unten self .__ index = self wenn ich diese Zeile entferne somevalue ist in meinem neuen Objekt nicht sichtbar das ist normal, weil ich das metamethod __index nicht benutzt habe. Was nützt Metatabellen dann? Nur Metamethoden? Sorry für triviale Frage, aber das ist wirklich interessant, ich weiß, ich kann getmetatable verwenden, um die Metatable eines Objekts zu überprüfen. Ich brauche eine einfache Antwort: Es gibt keine Verwendung ohne Metamethoden oder es gibt (wenn ja dann was).Was ist die Verwendung von Metatables ohne Metamethoden?
-- 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?