LUA获取最后一个表的访问/操作时间

时间:2020-06-17 19:42:23

标签: lua metatable

我现在拥有的是这个功能:

function MyAddon:New()
    local object = setmetatable({}, { __index = self })
    object.elements = { }
    object.lastAccess = os.time()
    return object
end

现在,我想在每次从lastAccess添加或删除某项时设置.elements,而无需在添加/删除功能中手动设置。我该怎么办?

编辑:

@lhf和@Piglet谢谢。所以这意味着什么? (顺便说一下,这是我忘记提的双端队列)

function MyAddon:New()
    local object = setmetatable({}, { __index = self })
    object.lastAccess = 0

    object.elements = { }
    local _elements = object.elements
    object.elements = { }
    setmetatable(object.elements,
    {
        __index = function(t, k)
            return _elements[k]
        end,
        __newindex = function(t, k, v)
            object.lastAccess = os.time()
            _elements[k] = v
        end,
        __mode = "kv",
    })
    return object
end

function MyAddon:GetLastAccess()
    return self.lastAccess
end

0 个答案:

没有答案