0

What I have now is this function:

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

Now I want to set lastAccess every time when something gets added or removed from .elements without set it manually in my adding/removing function. how can I do that?

edit:

@lhf and @Piglet thanks. so that means something like this? (btw this is for a deque i forgot to mention)

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
M.K.
  • 3
  • 2

0 Answers0