Lua-解包然后打包一个数组

Lua-解包然后打包一个数组,lua,Lua,如果我解包,则打包一个阵列: arr = {1, 2, 3, 4, 5} arr = table.pack(table.unpack(arr)) 我能否保证生成的arr与初始arr相同 在报告中指出: 请注意,结果表可能不是序列 这是什么意思?您引用的文档中提到的是如中所示的nils table.pack(1,nil,3) 您的表是一个序列,因此table.unpack(arr)不输出nils,而table.pack(table.unpack(arr))是一个序列 但是,table.pack(

如果我解包,则打包一个阵列:

arr = {1, 2, 3, 4, 5}
arr = table.pack(table.unpack(arr))
我能否保证生成的
arr
与初始
arr
相同

在报告中指出:

请注意,结果表可能不是序列


这是什么意思?

您引用的文档中提到的是如中所示的nils
table.pack(1,nil,3)

您的表是一个序列,因此
table.unpack(arr)
不输出nils,而
table.pack(table.unpack(arr))
是一个序列


但是,
table.pack(table.unpack(arr))
与原始的
arr
不同,因为它包含一个值为5的字段
n
。这是唯一的区别。

您引用的文档是关于nils的,如中所示
table.pack(1,nil,3)

您的表是一个序列,因此
table.unpack(arr)
不输出nils,而
table.pack(table.unpack(arr))
是一个序列


但是,
table.pack(table.unpack(arr))
与原始的
arr
不同,因为它包含一个值为5的字段
n
。这是唯一的区别。

如果
arr
是一个序列(里面没有
nil
s)并且不是太长(LuajIT的限制是8000个元素),那么
pack(unpack(arr))
也将是一个序列。如果您关心一个表是否有序列,也许最好不要使用“array”这样的术语,大致对应于一个有序列或没有序列以及没有其他感兴趣的字段的表。如果
arr
是一个序列(内部没有
nil
s)并且不太长(LuajIT的限制是8000个元素),那么
pack(unpack(arr))
也将是一个序列。如果您关心一个表是否有序列,也许最好不要使用像“数组”这样的术语,它大致对应于一个有序列或没有其他感兴趣的字段的表。另外请注意,
{table.unpack(arr)}
更快,并且在大多数情况下工作相同。另外请注意,
{table.unpack(arr)}
更快,并且在大多数情况下工作相同。