Lua - 检查数组是否存在

我正在尝试通过一个 if 语句来查找特定数组是否存在,如下所示:

if array{} == nil then array = {} else print("it exists") end

上面的方法似乎不起作用,我无法检查它是否存在。基本上,我正在创建一个 AddOn,扫描日志以查找特定事件,如果该事件为真,它将返回 spellName。我希望创建一个包含该 spellName 的数组。然而, spellName = {} 并不起作用,因为它似乎只会创建一个新的数组(而不是更新现有的数组)。

local _SPD = CreateFrame("Frame");
_SPD:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");
_SPD:SetScript("OnEvent", function(self, event, ...)

local timestamp, type, sourceName = select(1, ...), select(2, ...), select(5, ...)

if (event == "COMBAT_LOG_EVENT_UNFILTERED") then
    if select(2,...) == "SPELL_AURA_APPLIED" then
        if select(5,...) == UnitName("player") then

            local spellID, spellName = select(12, ...), select(13, ...)

             spellName = {
                sourceName = {

                }
            }

            table.insert(spellName["sourceName"], {id = spellID, stamp = timestamp })

            for k,v in pairs ( spellName["sourceName"] ) do
                print (k.. ": " ..v["id"].. " at " ..v["stamp"])
            end
        end
    end
end
end);

基本上,每次应用某个特定光环时它都会重新创建表(这是期望的行为)。

我已经想了很久,但我不知道如何检查 spellName(和 sourceName)是否存在,如果存在,则不再创建它们,因为在这种情况下变量已经存在,因为它返回值给我,所以我无法检查它们是否为 nil,因为它们不会是 nil,我需要某种方式检查这些值上是否存在一个表,如果不存在则创建它们。

提前感谢。

点赞
用户1190388
用户1190388

你的 table 检查声明是错误的。使用以下格式:

if type(array) == "table" then
  print("已存在")
else
  array = {}
end
2013-01-30 19:14:30
用户1847592
用户1847592

尝试这样做:

local spellID, spellName = select(12, ...), select(13, ...)
spellName = spellName or {}
spellName.sourceName = spellName.sourceName or {}
table.insert(spellName.sourceName, {id = spellID, stamp = timestamp })
2013-01-30 19:42:34