lua中实现对一个表的监控

监控内容:访问表中的元素和更新表中的元素

代码:

local index = {}

--注意:元表也是表,其中的元素也需要用合理分隔符分开
local mt = 
{
    __index = function(t,k)
        print("访问元素:" .. tostring(k));
        return t[index][k];
    end,

    __newindex = function(t,k,v)
        print("更新元素: k = ".. tostring(k) .. ", v = " ..tostring(v));
        t[index][k] = v;
    end
}


function Track(t)
    local proxy = {};
    proxy[index] = t;
    setmetatable(proxy,mt);
    return proxy;
end

测试用例:

local tab = {a = 12};
tab = Track(tab);
tab["a"] = 13
print(tab["a"])

输出结果:

lua中实现对一个表的监控