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需要包含哪些内容。虽然有许多编辑器的代码自动补全插件可以帮助您记住example_1函数的参数,但不能帮助您记住example_2的参数。

有没有方法以表参数的方式编写example_2函数,使其仍然是表,但也可以在()内显示函数所需的参数?

像这样(这不起作用):

function example_2(arg_table = {arg_one, arg_two, arg_three})

end
点赞
用户2226988
用户2226988

请按照通常的方式编写您的形式参数列表和文档,并将参数分开。然后,记录一下如果第一个(也是唯一的)实际参数是一个表格,则将使用形式参数名称作为字符串键从表格中获取有效参数。

2019-09-05 11:34:07
用户4515989
用户4515989

你可以保留函数参数,为了方便使用一个表进行传递。

例如:

function example(arg_one, arg_two, arg_three)
    -- do stuff
end
local tbl = {"value for arg_one", "value for arg_two", "value for arg_three"}
example(table.unpack(tbl))

请注意,这对具有命名键的表无效。

2019-09-05 13:12:57