lua学習のモニタリングテーブル
594 ワード
__indexと_newindexは、テーブルにアクセスするドメインが存在しない場合にのみ機能します.1つのテーブルへのすべてのアクセスをキャプチャする唯一の方法は、テーブルを空に保つことです.テーブルのすべてのアクセスを監視するには、空のテーブルであるエージェントを作成する必要があります.
local index = {}
local mt = {
__index = function(t, k)
print("*access to element "..tostring(k))
return t[index][k]
end,
__newindex = function (t,k,v)
print("*update of element "..tostring(k).." to "..tostring(v))
t[index][k] = v
end
}
function trace(t)
local proxy = {} --
proxy[index] = t
setmetatable(proxy, mt)
return proxy
end
私たちがモニターしたいのは、t=trace(t)だけです.