В командной строке Lua, когда я передаю аргументы в скрипт, подобный этому:
lua myscript.lua a b c d
Я могу прочитать имя моего скрипта и аргументы из глобальной таблицы arg
.arg [0] содержит имя скрипта, arg [1] - arg [#arg] содержит остальные аргументы.Странным является то, что таблица имеет значение с индексом 0, в отличие от любого другого массива Lua, который начинает индексирование с 1. Это означает, что при итерации по ней, например, так:
for i,v in ipairs(arg) do print(i, v) end
вывод учитывает толькоиндекс 1-4, и не печатает имя скрипта.Также #arg
оценивается как 4, а не 5.
Есть ли веская причина для такого решения?Первоначально это ошеломило меня, и я должен был убедиться, что руководство не ошиблось.