为什么
table.unpack()
函数仅在函数后面没有任何内容的情况下才打印解压的表?
> print(table.unpack({1,2,3}))
1 2 3
> print(table.unpack({1,2,3}),"a") -- expecting: 1 2 3 a
1 a
> print("a",table.unpack({1,2,3}))
a 1 2 3
背景: 我正在尝试创建一个递归函数,用于解压表、插入值并重新打包以返回包含新值的表。当您执行类似
table.pack("a", table.unpack({1,2,3}))
的操作时,此方法有效,但当您执行 table.pack(table.unpack({1,2,3}), "a")
时,则无效。
我曾经陷入过同样的陷阱。
当在表达式列表中使用多分辨率表达式时,没有 作为最后一个元素,或者在语法期望的地方 单个表达式,Lua 将该表达式的结果列表调整为 一个元素。
Lua 5.4 手册。 3.4.12 – 表达式列表、多个结果和调整。
因此,
table.unpack(…)
或 ...
应位于表达式列表中的最后。
table.insert()
?