使用`arg`作为 Lua 中的参数名称是否有副作用?
2018-10-14 12:52:18
收藏:0
阅读:106
评论:2
我正在为函数使用arg作为参数名称:
function foo(cmd, arg)
-- 等等
end
我刚刚了解到,当使用 变量参数 时,arg是一个特殊的隐藏变量,代表参数表:
function foo(bar, baz, ...)
-- `arg` 现在持有第 3 个及以上的参数
end
我在代码中使用arg作为参数名称会有任何问题吗?
点赞
用户9922866
首先,请注意我正在使用 Lua 5.3,这是我喜欢的版本。(尽管我想我之所以喜欢它是因为它是我开始学习的版本,并且我最熟悉它。)
其次,你使用的是 Lua 的哪个版本?在 Lua 5.3 中,arg指的是包含传递给脚本的所有命令行参数的表。例如,假设我有一个名为 test.lua 的脚本,它看起来像这样:
for i, v in ipairs(arg) do
print(i, v)
end
如果我像这样执行脚本 lua test.lua hello there, friend,它将生成以下输出:
hello
there,
friend
请注意,在 Lua 5.3 中,arg是全局环境表 _ENV 的成员;因此,arg等价于_ENV.arg或_ENV["arg"]。
在 Lua 5.3 中,似乎已经弃用了将arg作为函数的可变参数标记的用法。然而,一个简单的基于表的解决办法如下面的例子所示:
function foo(...)
-- 在表中收集可变参数。
local args = {...}
for i, v in ipairs(args) do print(i, v) end
return
end
关于local args = {...}这一行的行为与旧版本 Lua 中函数中的变量arg相同。
2020-01-17 04:36:59
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我知道这会引起问题,但我不确定具体是什么问题。所以我决定自己尝试一下。
我尝试了你的示例中显示的函数,结果得到了堆栈溢出错误。
根据官方 Lua 网站上的描述:
因此,我认为最好避免将参数命名为 "arg"。