Lua中引用当前未标识函数的方法

我喜欢使用嵌套函数,但是如果出现这种情况该怎么处理呢:

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

我想在同一个函数中执行类似removeEvent的操作,但是它需要函数作为第二个参数:

addEvent("onQuestion", function()
   do..some..stuff
   removeEvent("onQuestion", thisFunction)
end)
点赞
用户734069
用户734069

如果 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
2019-03-24 14:46:00