lua - table.concat 带字符串键
lua - table.concat with string keys
我在使用 lua 的 table.concat 时遇到了问题,我怀疑这只是我的无知,但找不到详细的答案来解释为什么我会出现这种行为。
> t1 = {"foo", "bar", "nod"}
> t2 = {["foo"]="one", ["bar"]="two", ["nod"]="yes"}
> table.concat(t1)
foobarnod
> table.concat(t2)
t2 上的 table.concat 运行 未提供任何结果。我怀疑这是因为键是字符串而不是整数(索引值),但我不确定为什么这很重要。
我正在寻找 A) 为什么 table.concat 不接受字符串键,and/or B) 允许我连接可变数量的 table 值的解决方法在几行中,没有指定键名。
因为这就是 table.concat
所做的 documented。
Given an array where all elements are strings or numbers, returns table[i]..sep..table[i+1] ··· sep..table[j]. The default value for sep is the empty string, the default for i is 1, and the default for j is the length of the table. If i is greater than j, returns the empty string.
非数组 table 没有定义的顺序,所以 table.concat
无论如何都不会那么有用。
您可以轻松编写自己的低效 table concat 函数。
function pconcat(tab)
local ctab, n = {}, =1
for _, v in pairs(tab) do
ctab[n] = v
n = n + 1
end
return table.concat(ctab)
end
如果您想自己构造字符串,您也可以使用 next
手动进行连接等操作(尽管这可能比上面的版本效率低)。
我在使用 lua 的 table.concat 时遇到了问题,我怀疑这只是我的无知,但找不到详细的答案来解释为什么我会出现这种行为。
> t1 = {"foo", "bar", "nod"}
> t2 = {["foo"]="one", ["bar"]="two", ["nod"]="yes"}
> table.concat(t1)
foobarnod
> table.concat(t2)
t2 上的 table.concat 运行 未提供任何结果。我怀疑这是因为键是字符串而不是整数(索引值),但我不确定为什么这很重要。
我正在寻找 A) 为什么 table.concat 不接受字符串键,and/or B) 允许我连接可变数量的 table 值的解决方法在几行中,没有指定键名。
因为这就是 table.concat
所做的 documented。
Given an array where all elements are strings or numbers, returns table[i]..sep..table[i+1] ··· sep..table[j]. The default value for sep is the empty string, the default for i is 1, and the default for j is the length of the table. If i is greater than j, returns the empty string.
非数组 table 没有定义的顺序,所以 table.concat
无论如何都不会那么有用。
您可以轻松编写自己的低效 table concat 函数。
function pconcat(tab)
local ctab, n = {}, =1
for _, v in pairs(tab) do
ctab[n] = v
n = n + 1
end
return table.concat(ctab)
end
如果您想自己构造字符串,您也可以使用 next
手动进行连接等操作(尽管这可能比上面的版本效率低)。