2013-06-08 15 views
6

Kiedy utworzę funkcję przez przypisanie, warunek "if" nie działa, ale gdy utworzę funkcję jak w drugim przykładzie poniżej, to działa. Czy możesz powiedzieć mi dlaczego?Tworzenie funkcji w Lua

Nie działa:

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) 

robocza:

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) 

Odpowiedz

12

To dlatego, że kiedy robisz local countDown = ..., tym countDown zmienna nie istniejepo... część została zrealizowana. Twoja funkcja uzyska dostęp do globalnej zmiennej , a nie lokalnej, która jeszcze nie istnieje.

Zauważ, że Lua konwertuje local function countDown ... się, co następuje:

local countDown 
countDown = function ...