Ссылка на текущую неопознанную функцию в Lua - PullRequest
0 голосов
/ 24 марта 2019

Мне нравится использовать вложенные функции, но как я могу иметь дело с чем-то вроде этого:

addEvent("onQuestion", function() body end)

Я хочу сделать что-то вроде removeEvent в той же функции, но для нее требуется функция как секундааргумент

addEvent("onQuestion", function()
   do..some..stuff
   removeEvent("onQuestion", thisFunction)
end)

1 Ответ

2 голосов
/ 24 марта 2019

Если способ removeEvent идентифицирует конкретную функцию события, которую необходимо удалить, предоставив именно эту функцию, то это то, что вам нужно сделать.Таким образом, функция должна быть где-то сохранена, чтобы функция могла передать ее removeEvent.

. Как правило, это будет выглядеть так:

local function eventFunc()
   do..some..stuff
   removeEvent("onQuestion", eventFunc)
end

addEvent("onQuestion", eventFunc)

Если вы хотите более общее решение, вы можете создать addSelfRemoveEvent упаковочную функцию:

function addSelfRemoveEvent(eventName, func)
  local outer function()
    func()
    removeEvent(eventName, outer)
  end
  addEvent(eventName, outer)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...