2013-06-08 5 views
6

Wenn ich die Funktion durch Zuweisen erstellen, funktioniert "If" Bedingung nicht, aber wenn ich die Funktion wie im zweiten Beispiel unten erstellen, funktioniert es. Kannst du mir sagen warum?Funktion erstellen in Lua

Problem:

local start=os.time() 

local countDown = function(event) 
    if((os.time()-start)==3) then 
     Runtime: removeEventListener("enterFrame", countDown) 
    end 
    print(os.time()-start) 
end 

Runtime:addEventListener("enterFrame", countDown) 

Arbeits:

local start=os.time() 

local function countDown(event) 
    if((os.time()-start)==3) then 
     Runtime: removeEventListener("enterFrame", countDown) 
    end 
    print(os.time()-start) 
end 

Runtime:addEventListener("enterFrame", countDown) 

Antwort

12

Das ist, weil, wenn Sie local countDown = ... tun, die countDown Variable nicht bis existiert nach der ... Teil ausgeführt wurde. Ihre Funktion wird also auf eine globale Variable zugreifen, nicht auf die lokale Variable, die noch nicht existiert.

anzumerken, dass Lua local function countDown ... in die folgende umgewandelt:

local countDown 
countDown = function ...