首页 > 解决方案 > 打印语句不在 ipairs 循环中执行

问题描述

我定义了下表,其中包含在字符串索引下定义的表,如下所示:

local myTable = {
    ["str-1"] = {
        id = 1,
        value = "val"
    },

    ["str-2"] = {
        id = 2,
        value = "val",
    },

    ["str-3"] = {
        id = 3,
        value = "val",
    }
}

for i, table in ipairs(myTable) do
    print(i)
    print(table)
end

我正在尝试遍历表的内容,但是print()语句没有给出输出?我放置了一个打印语句来打印循环的当前索引和该位置的表。

标签: lua

解决方案


这是因为您试图ipairs()在关联数组上使用循环。

相反,您可以使用pairs()支持迭代的循环,其中表的索引是关联的:

for i, table in pairs(myTable) do
    print(i)
    print(table)
end

循环使用pairs()键值对并与关联表一起使用,这也导致迭代不按顺序进行,而循环ipairs()使用索引值对,其类似可用于使用数字索引定义的常规表。


推荐阅读