интересная особенность: в Lua 5.3 итератор, возвращаемый ipairs, начисто игнорирует метаметод __len
я наткнулся на такую ситуацию: сделал имитацию разреженного числового массива, т.е. определил метаметод __index, возвращающий всегда ноль, и метаметод __len, возвращающий фактическую длину.
цикл до длины (#obj) не зацикливается, в отличие от for ... in ipairs(obj)