获取表格中的项目值

时间:2016-06-03 13:49:25

标签: lua

local sometable = {a = "ag", b = "fa"}
for k, v in ipairs(sometable) do
    print(k, v)
end

上面的代码是我的努力,那么如何在该表中打印a,b?

2 个答案:

答案 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

但那效率会非常低。