arrays - 如何使用键、值和索引遍历 Lua 表
问题描述
我想遍历一个看起来像这样的表
function add(t, k, v, ...)
if k ~= nil then
t[k] = v
t[#t+1] = k
return add(t, ...)
end
return t
end
my_table = add({ }, "a", 5, "b", 4, "c", 3)
for i,k in ipairs(my_table) do
local v = my_table[k]
print(k, v)
end
结果:
一 - 5
b - 4
c - 3
但我希望能够使用索引、键和值循环遍历表,所以它看起来像这样:
1 - 一个 - 5
2 - b - 4
3 - c - 3
这在Lua中可能吗?
解决方案
迭代器:
function triples(t)
local function next_triple(tbl, idx)
idx = idx + 1
local k = tbl[idx]
if k ~= nil then
return idx, k, tbl[k]
end
end
return next_triple, t, 0
end
用法:
local a = {"q", "w", "e", q = 11, w = 22, e = 33}
for i, k, v in triples(a) do
print(i, k, v)
end
输出:
1 q 11
2 w 22
3 e 33
推荐阅读
- javascript - 拖放到拖动区域时在输入类型中显示形状的 ID,并在选择它们时在拖动区域中编辑形状
- javascript - 如何使用 jquery 单选按钮?
- python - 反向打乱数据
- mysql - 使用 mysql 中的间隔在数据库日期中添加月份
- bots - 在 Discord 中更改 Bot 角色的位置
- excel - 使用 VBA 从 Excel 文件目录中删除已知密码
- c# - 没有参数给出对应于 'form1.Form1(string[]) 的所需形式参数 'args'
- visual-studio-code - 在 vs 代码中安装 python 模块不起作用
- android -
在 Android Studio 4.0.2 - python-3.x - Python:Base64 解码编解码器无法解码位置 47-48 中的字节:无效的继续字节