Wie ändert man den Längenoperator (#
) für eine Tabelle in Lua, das Handbuch schlägt vor, die __len
Funktion in einem Metatable zuweisen und dann das Metatable der Tabelle zuweisen, die ich überschreiben möchte, aber Das funktioniert nicht wie erwartet? Ich habe keine Möglichkeit, dies auf der C-Seite zu überschreiben.Lua Tabellenlänge Funktion Override funktioniert nicht
turtles = {1,2,3}
setmetatable(turtles, {__len = function(mytable) return 5 end})
print(#turtles)
--returns 3, should return 5
möglich Duplikat [Lua Überschreibung # für Strings] (http://stackoverflow.com/questions/23085204/lua-override-for-strings) –
@LarryBattle Nicht wirklich ein Duplikat, hier der Operand ist keine Zeichenfolge, sondern eine Tabelle. –
Ihr Code funktioniert gut in der [Lua Live-Demo] (http://www.lua.org/demo.html). – lhf