重新打包或打印未打包的Lua表

问题描述 投票:0回答:1

为什么

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")
时,则无效。

recursion lua lua-table
1个回答
0
投票

我曾经陷入过同样的陷阱。

当在表达式列表中使用多分辨率表达式时,没有 作为最后一个元素,或者在语法期望的地方 单个表达式,Lua 将该表达式的结果列表调整为 一个元素。

Lua 5.4 手册。 3.4.12 – 表达式列表、多个结果和调整

因此,

table.unpack(…)
...
应位于表达式列表中的最后。

也许,如果您确实想将一些值插入表中,您可以使用

table.insert()

© www.soinside.com 2019 - 2024. All rights reserved.