gpt4 book ai didi

lua - 为什么 LuaJIT/Openresty 可以使用已弃用的 'arg' 语言功能?

转载 作者:行者123 更新时间:2023-12-02 20:15:06 26 4
gpt4 key购买 nike

我的理解是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

为什么这有效? Openresty 和 LuaJIT 可以使用的 5.1 语法是否有异常(exception)?

最佳答案

你正在混合两种不同的东西。

您在此处看到的 arg 表不是“已弃用的 Lua 功能”。它是提供给 Lua 解释器的参数表,由解释器显式推送到全局 arg 变量,并且在最新的 Lua 和 LuaJIT 版本中仍然存在。

您听说过的功能已被删除 - 即用 vararg 函数中的 vararg 表达式替换隐式 arg 参数。 IE。函数的额外参数现在可以通过 ... 语法使用,而不是通过隐式 arg 参数作为收集值表。

关于lua - 为什么 LuaJIT/Openresty 可以使用已弃用的 'arg' 语言功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52581199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com