В первом обсуждении таблиц « Программирование в Lua » они упоминают:
Поскольку вы можете индексировать таблицу с любым значением, вы можете начинать индексы массива с любого числа, которое вам нравится. Однако в Lua принято начинать массивы с 1 (а не с 0, как в C), и некоторые средства придерживаются этого соглашения.
Позже, в главе о структурах данных, они снова говорят почти то же самое: что встроенные средства Lua предполагают индексирование на основе 1.
Во всяком случае, есть пара удобства для использования индексирования 1 на основе. А именно, #
оператор (длина): t[#t]
доступ к последнему (числовому) индексу таблицы и t[#t+1]
доступ к 1 после последнего индекса. Для тех, кто еще не сталкивался с индексированием на основе 0, #t+1
было бы более интуитивно понятно пройти за конец списка. Также существует for i = 1,#t
конструкция Lua , которая, как я считаю, попадает в ту же категорию, что и предыдущий пункт, что «1 по длине» может быть более разумным, чем индексирование «0 по длине минус 1».
Но, если вы не можете сломать мышление об индексировании на основе 0, то индексация на основе 1 в Lua, безусловно, может быть большим препятствием. В конечном итоге авторы хотели, чтобы у них получилось ; и я признаю, что не знаю, какова была их первоначальная цель, но с тех пор она, вероятно, изменилась.