Lua中两张桌子的比较?

时间:2016-03-28 18:31:32

标签: lua traversal lua-table

我想提供一个表,其中包含os.date("*t")输出中使用的字段的子集,并查看指定的字段是否与实际os.date("*t")调用给出的字段匹配。像这样:

function datetimeTableTrue (dt)
    local nowTodayTable = os.date("*t");
    for i, v in ipairs(dt) do
        print("ping");
        if not (dt[i] == nowTodayTable[i] ) then
            return(false);
        end
    end
    print("pong");
    return(true);
end

print(tostring(datetimeTableTrue({day=0,hour=15})))

我希望在星期一这里有 false ,因为' day'给出但不是1.但是,我总是得到一个真实的'从来没有" ping"输出。怎么样?

显然,我是Lua的新手,所以请原谅我的愚蠢。

1 个答案:

答案 0 :(得分:2)

你想使用对而不是ipairs,ipairs只会遍历整数键

function datetimeTableTrue(dt)
    local nowTodayTable = os.date("*t")
    for k, v in pairs(dt) do
        if nowTodayTable[k] ~= v then
            return false
        end
    end
    return true
end

print(datetimeTableTrue({day=0, hour=15}))

Lua不需要分号