lua中实现对一个表的监控

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

代码:

 1 local index = {}
 2 
 3 --注意:元表也是表,其中的元素也需要用合理分隔符分开
 4 local mt = 
 5 {
 6     __index = function(t,k)
 7         print("访问元素:" .. tostring(k));
 8         return t[index][k];
 9     end,
10 
11     __newindex = function(t,k,v)
12         print("更新元素: k = ".. tostring(k) .. ", v = " ..tostring(v));
13         t[index][k] = v;
14     end
15 }
16 
17 
18 function Track(t)
19     local proxy = {};
20     proxy[index] = t;
21     setmetatable(proxy,mt);
22     return proxy;
23 end

测试用例:

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

输出结果:

posted @ 2020-06-21 22:22  小·糊涂仙  阅读(279)  评论(0编辑  收藏  举报