lua - `table.pack` 将`n` 字段添加到表中的目的?哎呀,为什么`table.pack`甚至存在?
问题描述
标题说明了一切。我想知道为什么 Luan
在使用table.pack()
.
从字面上看,这是您可以实现的方式:
function pack(...)
return { n = select("#", ...), ... }
end
-- pretty useless
我看不到一点,因为您可以使用它{}
来构建表格并#tbl
获取表格中有多少元素。
local tbl = table.pack('a', 'b', 'c', 'd')
print(tbl.n, #{ 'a', 'b', 'c', 'd' }) -- 4 4
-- Same thing
如果你next
用来遍历一个用 构建的表table.pack
,它真的会破坏迭代。Ofc 你可以使用ipairs
,但对于那些不使用的人?哦,长度运算符不会计算在内n
。
解决方案
table.pack()
不需要返回一个序列。只有当所有参数都是非nil
.
因此,如果你想反转它,你需要"n"
-member 在一般情况下。
table.unpack(t, 1, t.n)
尽管实现非常简单,但table.pack()
它仍然是一个有用的抽象。
推荐阅读
- microsoft-dynamics - 无法为 Power Apps 创建嵌入式画布应用,在租户中找不到
- c++ - C ++:将方法转换为另一种方法
- python - 使用 ArgumentParser 将参数保存在字典中
- vba - VBA 从文件路径中提取字符串
- typescript - 我正在使用柏树来自动化。我需要打开窗口文件上传对话框并附加任何文件。我该怎么做?
- c++ - 带参数的 QT 信号如何工作
- git - 将文件添加到不准确的 git 存储库
- javascript - Next.js Reload on Save
- python - 如何使用 tf.keras 从 savedModel 访问图层
- c++ - Gurobi 中 LP 的最佳基数的大小