UnLua代理有几行我看不懂的代码。希望有人可以帮助我回答

Notifier_C.AutoRemoveEvent = function(widget, messageId, callback)
    如果messageId == nil 或者widget == nil 或者callback == nil then
        返回
    end

    local objectEvents = Notifier_C.eventsMap[messageId]

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

    如果Notifier_C.eventIdsMap[messageId] == nil then
        Notifier_C.eventIdsMap[messageId] = messageId
    end

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

    local objectfuncs = Notifier_C.objectFuncMap[widget]

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

    objectfuncs[callback] = callback

    --Notifier_C.Dump()
end

原文链接 https://stackoverflow.com/questions/70562850

点赞
stackoverflow用户2858170
stackoverflow用户2858170

这段代码检查Notifier_C.eventsMap[messageId]是否存在,如果不存在,就分配一个空表。

首先,他们创建一个对 Notifier_C.eventsMap[messageId]的本地引用 objectEvents。这主要是为了使用更短的 objectEvents 使代码更易读。

然后,检查该值是否为 nil 。 如果是,则替换为空表。因为后面预期它是一个表。

所以,空表是 Notifier_C.eventsMap[messageId] 的默认值。

2022-01-03 08:31:03