Можно ли заставить индексирование таблицы Lua начинаться с нуля?

У меня проблема с Lua. Используется индексация по одному. В языке есть функция для установки значения в индекс 0, но значение выиграло не может считаться частью длины таблицы, а манипуляции со строками все еще основаны на одном. Поэтому я думаю, что эта функция является чем-то особенным, а не индексацией.

Я не хочу, чтобы пламя касалось единицы или нуля. Я просто спрашиваю, есть ли возможность принудительной индексации с нуля.

13
задан Eonil 17 March 2019 в 19:52
поделиться

2 ответа

Я думаю, что в этом Lua уже есть функция, которая вам нужна, чтобы сделать его основанным на 0. К сожалению, я имею в виду лицензию Lua с открытым исходным кодом.

Мне не удалось найти патч или форк Lua, который изменил бы основанную на единице природу языка.

К сожалению, форк Lua для изменения его на 0-основанный также нарушит обратную совместимость. Потеря всех текущих дополнительных модулей может оказаться слишком большой платой за простоту использования.

2
ответ дан 2 December 2019 в 01:20
поделиться

Даже если бы в исходниках Lua был #define TABLE_START_INDEX 1 (который, я не думаю, есть), вы бы в значительной степени прострелили себе ногу, изменив это. Это связано с тем, что большинство библиотек используют индексирование на основе 1. Таким образом, любой код, выполняющий что-то вроде следующего, сломается.

для i = 1, #t do ... end

Вы, конечно, можете использовать итераторы или даже создавать вспомогательные функции, чтобы этого избежать.

function get_first (t) return t [1] end

Вероятно, хотя реальная проблема, которую вы пытаетесь решить, сложнее, чем изменение индексации с 0 на 1.

1
ответ дан 2 December 2019 в 01:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: