Насколько я понимаю, LuaJIT использует синтаксис Lua 5.1.В Lua 5.1 функция 'arg' была удалена из языка.
Однако следующий код работает.
// test.lua
local function foo()
for k,v in pairs(arg) do
print(k .. " " .. v)
end
end
foo()
Я бы ожидал, что arg
будет нулевым, но он существуети делает функциональность Lua 5.0.
Запуск resty test.lua hello world
приводит к:
0 test.lua
1 hello
2 world
-1 /usr/local/bin/resty
Почему это работает?Существуют ли исключения из синтаксиса 5.1, которые могут использовать Openresty и LuaJIT?