2016-03-28 49 views
0

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

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}))) 

我希望一个这里在星期一,作为“天”给定,但是不是1。但是,我总是得到一个“真实”,绝不是“平”的输出。怎么来的?

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

回答

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

+0

太好了!非常感谢! –