题:
我正在尝试将一个数组解压缩为一个数组,但是只有当它是最后一个被解压缩的项目时才有效,如果仅在第一个元素被解压缩后还有任何东西的话。以下是我要执行的操作的一个非常基本的示例。有没有更好的方法可以执行此操作,还是我必须解决的错误?我不想使用table.insert,因为在表的定义中添加诸如unpack之类的内容似乎更具可读性。
码:
print ("Error 1")
local table1 = { {1,1}, {2,2}, {3,3} }
local table2 = { {0,0}, unpack (table1), {4,4} }
for n,item in ipairs (table2) do print (unpack(item)) end
print ("Good")
table1 = { {1,1}, {2,2}, {3,3} }
table2 = { {0,0}, unpack (table1) }
for n,item in ipairs (table2) do print (unpack(item)) end
print ("Error 2")
table1 = { {1,1}, {2,2}, {3,3} }
table2 = { {0,0}, unpack (table1), unpack (table1) }
for n,item in ipairs (table2) do print (unpack(item)) end
输出:
Error 1
0 0
1 1 -- {2,2} & {3,3} cut off.
4 4
Good
0 0
1 1 -- All elements unpacked.
2 2
3 3
Error 2
0 0
1 1 -- {2,2} & {3,3} cut off.
1 1 -- All elements unpacked.
2 2
3 3
注意:
我正在运行5.1版。
最佳答案
这不是错误。如果调用不是最后一个,则将返回多个值的函数调用调整为第一个值。手册说在http://www.lua.org/manual/5.1/manual.html#2.5