LUA получить время последнего доступа к таблице / манипуляции - PullRequest
0 голосов
/ 17 июня 2020

Теперь у меня есть эта функция:

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

Теперь я хочу устанавливать lastAccess каждый раз, когда что-то добавляется или удаляется из .elements, не устанавливая его вручную в моей функции добавления / удаления . как я могу это сделать?

edit:

@ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...