nikolz, Лапуль, Вам опять неймётся? Скажите, ХОТЬ КТО-НИБУДЬ воспринимает Вас здесь как учителя? Да за одно Ваше утверждение, что вызов функций слишком медленный, а потому следует заменять вызовы функций кусками кода, Вас надо ссаными тряпками гнать из программирования! Кому какое дело (особенно начинающим), что там "у VM LUA внутри"? Даже если предположить, что Вы и в самом деле хоть что-то об этом знаете.
Основа VMLua - это НЕ таблицы! Правды здесь только в том, что конструкцию key-value действительно можно представить в виде таблицы, хотя даже эта, прости, Господи, "таблица" таблицей в обычном понимании не является. Это ДЕРЕВО, лапуль, а не таблица. А обращение к его элементам организовано как к многомерному кубу.
Абсолютно согласен: "Многие просто не представляют сложность реализации таблиц в VM Lua". Я вот совершенно без понятия, что тут может быть сложного.
Беглый взгляд на статью на Хабре сразу создал впечатление: это писал распальцованный дурак (уж не Вы ли?), но Ваше мнение здесь настолько авторитетно, что статью эту я, так и быть, почитаю.
Итак:
1. Ну, бредни про "ликбез" или "говоря научным языком" я пропускаю, хотя характеристика автору по одной этой распальцовке уже дана буквально с первых строк.
2. Бредни про "хеш-мап" я также опускаю - отмечу только, что одно только слово "хеш" опровергает утверждение, что "таблицу можно использовать и как массив (если ключи целочисленные)". Что я и говорил в одном из первых своих сообщений от 29.09.2020 10:31:16:
"В общем, с языком почти всё ясно: граф (точнее, дерево) объектов построить можно, а простейшую таблицу или даже массив - нельзя. Остаётся разобраться со строковыми переменными".3. ОЙ, МАМА! Так это РАЗРАБОТЧИК Lua?! Надеюсь, его спросили, какому идиоту ударила моча в голову воткнуть туда эту долбаную "динамическую типизацию" и как они посмели убить тип "integer"?
4. Ах, вона как!
"В зависимости от того, в каком порядке элементы добавлялись в таблицу, их порядок при итерировании будет отличаться". А кто-то чуть раньше кукарекал, что
"таблицу можно использовать и как массив". Поздравляю вас, гражданин соврамши.(с)
5. О, Господи! А что, бывает и так, что удаление значения ПРИВОДИТ к удалению ключа? Ох, Лавров, Лавров...
6. О КАК! Оказывается,
"индексация в языке начинается с единицы". А у меня в большинстве случаев с нуля, причём нулевой элемент обычно содержит общую информацию о текущем наборе данных, индексы которых действительно идут с единицы.
7. Итератор pairs они смело могут засунуть себе в задницу вместе с огромной кучей столь же "нужного" говна вроде table.sort. И с дырками в массивах уж как-нить без сопливых справимся.
Резюме: ГОВНО ваш язык! ГОВНО!
Ну да, и в комментах:
Какой ужас… Никогда не любил этот язык.
И даже:
Тогда можно попробовать переносить последний элемент на место удаляемого и обнулять уже по последнему индексу.Пральна! Именно так у меня устроены стеки заявок и сделок (которые, конечно, не совсем стеки). Только нафига "обнулять по последнему индексу"? Ведь через пару [милли]секунд там новый элемент появится.