Lua在一个阵列上传播算子

时间:2018-05-23 00:31:53

标签: arrays lua spread

将变量传递给函数时,lua是否有扩展运算符?

例如,我有一个数组a,我想把它传递给另一个函数,比如string.format。如果我只是string.format(a),那么我得到

bad argument #1 to 'format' (string expected, got table)

我试了local f, e = pcall(string.format, t)没有运气。

1 个答案:

答案 0 :(得分:2)

Kousha。我正在修补并偶然发现了一个你可能感兴趣的功能。

在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));