У програмуванні в першому обговоренні таблиць Луа вони згадують:
Оскільки ви можете індексувати таблицю будь-яким значенням, ви можете запустити індекси масиву з будь-якого числа, яке вам подобається. Однак у Луї прийнято починати масиви з 1 (а не з 0, як у С), і кілька об'єктів дотримуються цієї конвенції.
Пізніше, у розділі про структури даних, вони знову повторюють майже те саме: вбудовані засоби Lua передбачають індексацію на основі 1.
У будь-якому випадку є кілька зручностей використання 1-індексованої індексації. А саме #
оператор (довжина): отримує t[#t]
доступ до останнього (числового) індексу таблиці та має t[#t+1]
доступ до 1 минулого останнього індексу. Для тих, хто ще не зазнав індексації на основі 0, #t+1
було б більш інтуїтивно просуватися в кінці списку. Є також for i = 1,#t
конструкція Луа , яка, на мою думку, підпадає під ту ж категорію, що і попередня точка, що "1 на довжину" може бути більш розумним, ніж індексувати "0 до довжини мінус 1".
Але, якщо ви не можете зламати настрій індексації на основі 0, то індексація на основі Lua, безумовно, може стати більш перешкодою. Зрештою, автори хотіли чогось, що для них працювало ; і я визнаю, що не знаю, якою була їх початкова мета, але, мабуть, вона змінилася з того часу.