Lua 在函数调用中解包表
在不提供太多细节的情况下,此示例片段演示了问题:Lua 在函数调用中解包表,lua,Lua,在不提供太多细节的情况下,此示例片段演示了问题: -- Add an extra predefined argument function one_more_arg(...) local args = {...} return function() print(table.unpack(args), "c") en
-- Add an extra predefined argument
function one_more_arg(...)
local args = {...}
return function()
print(table.unpack(args), "c")
end
end
local my_new_print = one_more_arg("a", "b")
my_new_print() -- "a c"
显然,在这种情况下,解包表不起作用。关于如何实现这一点的任何想法,即print
将收到“a”、“b”、“c”
?我试图避免修改args
,除非这是实现它的唯一方法
table.concat (list [, sep [, i [, j]]])
给定一个所有元素都是字符串或数字的列表,返回字符串列表[i]…sep..list[i+1]···sep..list[j]。sep的默认值是空字符串,i的默认值是1,j的默认值是#list。如果i大于j,则返回空字符串 将table.unpack()作为函数的参数时,不应该有其他参数,或者应该是最后一个参数。否则,将只传递表中的第一个值 Lua始终将函数的结果数调整为 电话的情况。当我们将函数作为语句调用时,Lua 放弃其所有结果。当我们使用调用作为表达式时,Lua 只保留第一个结果。只有在通话结束时,我们才能得到所有结果 表达式列表中的最后一个(或唯一)表达式。这些 列表在Lua中以四种结构显示:多重赋值, 函数调用、表构造函数和返回的参数 声明 从 因此,如果您觉得合适,您可以尝试将
解包
放在末尾:
print("c", table.unpack(args))
或者修改
args
第三个选项:如果可能,使用:打印(vararg.append(“c”,table.unpack(args))
本地args={…};表.插入(args,“c”)