En Programación en la primera discusión de tablas de Lua , mencionan:
Como puede indexar una tabla con cualquier valor, puede comenzar los índices de una matriz con cualquier número que le agrade. Sin embargo, es habitual en Lua iniciar matrices con 1 (y no con 0, como en C) y varias instalaciones se adhieren a esta convención.
Más adelante, en el capítulo sobre estructuras de datos, dicen casi lo mismo otra vez: que las instalaciones integradas de Lua asumen una indexación basada en 1.
De todos modos, hay un par de comodidades para usar la indexación basada en 1. A saber, el #
operador (longitud): t[#t]
accede al último índice (numérico) de la tabla y t[#t+1]
accede a 1 más allá del último índice. Para alguien que aún no ha estado expuesto a la indexación basada en 0, #t+1
sería más intuitivo pasar el final de una lista. También está la for i = 1,#t
construcción de Lua , que creo que pertenece a la misma categoría que el punto anterior de que "1 a la longitud" puede ser más sensible que indexar "0 a la longitud menos 1".
Pero, si no puede romper la mentalidad de la indexación basada en 0, entonces la indexación basada en 1 de Lua ciertamente puede ser más un obstáculo. Finalmente, los autores querían algo que les funcionara ; y admito que no sé cuál era su objetivo original , pero probablemente ha cambiado desde entonces.