Jak zmienić operatora długości (#
) dla tabeli w Lua, instrukcja sugeruje przypisanie funkcji __len
w metatable, a następnie przypisanie tej metatabilitacji do tabeli, którą chcę przesłonić, ale to nie działa zgodnie z oczekiwaniami? Nie mam opcji, aby zastąpić to po stronie C.Zastępowanie funkcji długości tabeli Lua nie działa
turtles = {1,2,3}
setmetatable(turtles, {__len = function(mytable) return 5 end})
print(#turtles)
--returns 3, should return 5
możliwe duplikat [Lua override # dla ciągów] (http://stackoverflow.com/questions/23085204/lua-override-for-strings) –
@LarryBattle Niezupełnie duplikatu, tutaj argumentu nie jest łańcuchem, ale tabelą. –
Twój kod działa poprawnie w [Lua live demo] (http://www.lua.org/demo.html). – lhf