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