如何在Lua中跳过可选参数?
2011-8-21 7:14:51
收藏:0
阅读:109
评论:4
有一种方法我一直在称之为:
t1,t2 = LSL:GetDiffItem(item)
其中该方法声明为:
GetDiffID(item,ignoreEnchant,ignoreGem,red,yellow,blue,meta,ignorePris)
现在我想传递附加参数,跳过一些:
item,ignoreEnchant,ignoreGem,_red_,_yellow_,_blue_,_meta_,ignorePris
尝试_跳过_参数:
t1,t2 = LSL:GetDiffItem(item,ignore,ignore,,,,,ignore)
但当然这不起作用:
意外符号附近的 ','
那么,如何在Lua中跳过可选参数?
另请参阅
- [lua.org-5.3-命名参数“_参数是位置的_”](http://www.lua.org/pil/5.3.html)
原文链接 https://stackoverflow.com/questions/7131792
点赞
stackoverflow用户596285
如果您正在编写自己的函数(而不是使用预先存在的 API),我使用的方法是将一个表作为函数的唯一参数传递,并在该表中填写相应的值。在函数的第一步中分配一个默认值为元表避免在每一步查找默认值,但请确保用户知道您正在覆盖输入的元表。
2011-08-20 15:02:50
stackoverflow用户282536
使用 nil
。
请注意,当 C 代码使用 gettop,或者在类型的 switch/case 中依赖于“NONE”,或者显式地检查 none 或 nil 而不是 lua_isnoneornil
时,这种方法不起作用。
2011-08-21 04:24:07
stackoverflow用户3919942
你可以使用[命名参数](http://www.lua.org/pil/5.3.html)。 如lua.org所述:“当函数有许多参数并且大多数参数是可选的时,这种参数传递方式特别有帮助。”
思路是将所有参数传递为表格:
function InfoItem(item)
if item.name then
print("Name: ",item.name)
end
if item.color then
print("Color: ",item.color)
end
if item.enchant then
print("Enchant: ",item.enchant)
end
if item.specialInfo then
print(item.specialInfo)
end
end
InfoItem{name = "互联网巨魔的灭霸", color = "银色"}
InfoItem{name = "死亡的脚趾甲钳", enchant = "牢不可破", specialInfo = "稍稍用力即可剪破最厚的指甲。"}
2015-03-17 06:01:26
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
传递
nil
。这将与从未传递参数一样。但是,请注意文档中指出您可以这样做,因为大多数函数不会检查每个独立的可选参数,只有在提供了前一个参数后才会检查每个参数。