Создание функции в Lua

Когда я создаю функцию, присваивая условие "если", оно не работает, но когда я создаю функцию, как во втором примере ниже, оно работает. Ты можешь сказать мне, почему?

Не работает:

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)

За работой:

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)

1 ответ

Решение

Это потому, что когда вы делаете local countDown = ..., countDown переменная не существует, пока после ... часть была выполнена. Таким образом, ваша функция будет обращаться к глобальной переменной, а не к локальной, которая еще не существует.

Обратите внимание, что Lua преобразует local function countDown ... в следующее:

local countDown
countDown = function ...
Другие вопросы по тегам