Lua函数:如何使用表作为函数参数并自行记录代码
当我的函数包含许多参数时,有时将一个表作为参数而不是许多局部变量传递是很有用的Lua函数:如何使用表作为函数参数并自行记录代码,lua,Lua,当我的函数包含许多参数时,有时将一个表作为参数而不是许多局部变量传递是很有用的 function example_1(arg_one, arg_two, arg_three) end 变成 function example_2(arg_table) arg_table.arg_one, arg_table.arg_two, arg_table.arg_three end 问题是,在代码中的其他地方调用函数时,很难记住arg_table需要包含哪些内容。许多编辑器都有很多代码完成插件
function example_1(arg_one, arg_two, arg_three)
end
变成
function example_2(arg_table)
arg_table.arg_one, arg_table.arg_two, arg_table.arg_three
end
问题是,在代码中的其他地方调用函数时,很难记住arg_table需要包含哪些内容。许多编辑器都有很多代码完成插件,它们可以帮助您记住示例_1
函数的参数,但不记得示例_2
的参数
是否有任何方法可以使用表参数编写示例_2
函数,使其仍然是一个表,但同时在()
中显示函数所需的参数
类似这样的东西(不起作用):
像往常一样,用单独的参数编写正式的参数列表和文档。然后记录,如果第一个(也是唯一一个)实际参数是一个表,那么将使用形式参数名作为字符串键从表中获取有效参数 为了方便起见,您可以保持函数参数的原样并传递一个表 例如:
函数示例(arg\u一、arg\u二、arg\u三)
--做事
结束
localtbl={“arg_一的值”、“arg_二的值”、“arg_三的值”}
示例(表.拆包(tbl))
请注意,这对具有命名键的表不起作用。使用
assert(arg_table.arg_one~=nil和arg_table.arg_two~=nil和arg_table.arg_three~=nil)启动函数。
为什么不在调用函数时解压表并保留函数参数呢,这是我更改传入参数值的少数情况之一:arg_one,arg_two=arg_one.arg_one,arg_one.arg_two
function example_2(arg_table = {arg_one, arg_two, arg_three})
end