首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnLua委托有几行我无法阅读的代码。我希望有人能帮我回答

UnLua委托有几行我无法阅读的代码。我希望有人能帮我回答
EN

Stack Overflow用户
提问于 2022-01-03 07:42:10
回答 1查看 65关注 0票数 -2
代码语言:javascript
复制
Notifier_C.AutoRemoveEvent = function(widget, messageId, callback)
    if messageId == nil or widget == nil or callback == nil then
        return
    end


    local objectEvents = Notifier_C.eventsMap[messageId]

    if objectEvents == nil then
        objectEvents = {}
        Notifier_C.eventsMap[messageId] = objectEvents
    end

    if Notifier_C.eventIdsMap[messageId] == nil then
        Notifier_C.eventIdsMap[messageId] = messageId
    end

    objectEvents[#objectEvents + 1] = {widget, callback}

    local objectfuncs = Notifier_C.objectFuncMap[widget]

    if objectfuncs == nil then
        objectfuncs = {}
        Notifier_C.objectFuncMap[widget] = objectfuncs
    end

    objectfuncs[callback] = callback

    --Notifier_C.Dump()
end
EN

回答 1

Stack Overflow用户

发布于 2022-01-03 08:31:03

代码语言:javascript
复制
local objectEvents = Notifier_C.eventsMap[messageId]
if objectEvents == nil then
  objectEvents = {}
  Notifier_C.eventsMap[messageId] = objectEvents
end

这只是检查Notifier_C.eventsMap[messageId] exists.If,而不是分配空表。

因此,首先,他们创建了一个指向Notifier_C.eventsMap[messageId]的本地引用Notifier_C.eventsMap[messageId]。这主要是因为您可以使用更短的objectEvents来提高代码的可读性。

然后检查这个值是否为零值。如果是这样的话,您可以用一个空表替换它。和后来一样,它将是一个表。

因此,空表是Notifier_C.eventsMap[messageId]的默认值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70562850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档