Lua 数组的展开运算符
Lua spread operator on an array
当您将变量传递给函数时,lua 是否有扩展运算符?
例如,我有一个数组 a
,我想将其传递给另一个函数,比如 string.format
。如果我只是做 string.format(a)
然后我得到
bad argument #1 to 'format' (string expected, got table)
我尝试了 local f, e = pcall(string.format, t)
但没有成功。
口杀。我正在修补并偶然发现了一个您可能感兴趣的函数。
在 Lua 的 5.1 版中,unpack
可用作全局函数。在 5.2 中,他们将其移至 table.unpack
,这更有意义。您可以使用类似下面的内容调用此函数。 string.format
只接受一个字符串 除非您在格式参数中添加更多内容。
-- Your comment to my question just made me realize you can totally do it with unpack.
t = {"One", "Two", "Three"};
string.format("%s %s %s", table.unpack(t)); -- One Two Three
-- With your implementation,
-- I believe you might need to increase the length of your args though.
local f = "Your table contains ";
for i = 1, #t do
f.." %s";
end
string.format(f, table.unpack(t));
当您将变量传递给函数时,lua 是否有扩展运算符?
例如,我有一个数组 a
,我想将其传递给另一个函数,比如 string.format
。如果我只是做 string.format(a)
然后我得到
bad argument #1 to 'format' (string expected, got table)
我尝试了 local f, e = pcall(string.format, t)
但没有成功。
口杀。我正在修补并偶然发现了一个您可能感兴趣的函数。
在 Lua 的 5.1 版中,unpack
可用作全局函数。在 5.2 中,他们将其移至 table.unpack
,这更有意义。您可以使用类似下面的内容调用此函数。 string.format
只接受一个字符串 除非您在格式参数中添加更多内容。
-- Your comment to my question just made me realize you can totally do it with unpack.
t = {"One", "Two", "Three"};
string.format("%s %s %s", table.unpack(t)); -- One Two Three
-- With your implementation,
-- I believe you might need to increase the length of your args though.
local f = "Your table contains ";
for i = 1, #t do
f.." %s";
end
string.format(f, table.unpack(t));