2016-03-28 19 views
0

Ich möchte eine Tabelle mit einer Teilmenge der Felder, die in der Ausgabe von os.date("*t") verwendet werden, und sehen, ob die angegebenen Felder entspricht, was durch einen tatsächlichen os.date("*t") Aufruf gegeben wird. Wie folgt aus:Vergleich von zwei Tabellen in 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}))) 

würde ich eine falsch hier an einem Montag zu erwarten, als ‚Tag‘ gegeben ist, ist aber nicht 1. Aber ich bekomme immer ein ‚wahr‘ und nie einen „Ping“ ausgegeben. Woher?

Offensichtlich bin ich neu zu Lua, also entschuldigen Sie bitte meine Dummheit.

Antwort

2

Sie wollen ipairs anstelle von Paaren verwenden, werden ipairs nur durch sind

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

Semikolons

Schlüssel integer iterieren nicht

+0

Groß in Lua benötigt! Danke vielmals! –