local sometable = {a = "ag", b = "fa"}
for k, v in ipairs(sometable) do
print(k, v)
end
上面的代码是我的努力,那么如何在该表中打印a,b?
答案 0 :(得分:2)
您正在使用错误的迭代器。 ipairs
用于序列。对于类似哈希的表,请改用pairs
:
for k, v in pairs(sometable) do
答案 1 :(得分:0)
ipairs
仅遍历表的数组部分。你能做的只是写作
print(sometable.a, sometable.b)
或者您可以使用
循环遍历表格的字典和数组部分for key, value in pairs(sometable)
您也可以定义自己的迭代器,只循环遍历表的字典部分。在我看来,它看起来像
function cycle(dict)
local contentarray = {}
for k, v in pairs(dict) do
contentarray[#contentarray + 1] = {k, v}
end
local n = 0
return function()
n = n + 1
if not contentarray[n] then
return
else
while type(contentarray[n][1]) ~= "string" do
n = n + 1
end
return contentarray[n][1], contentarray[n][2]
end
end
end
但那效率会非常低。