我想检查一个变量,看看它是否改变。我知道循环可能可行,但我不想使用它们。我希望检查响应的方式是,一旦变量更改,我就可以选择相应地使用哪个函数。
如果您really希望它是透明的,并且不太关心速度和可能破坏的事物,则可以使用元表:
local name = "proxied" -- The name of your variable
do local proxy
setmetatable(_G, {
__index=function(self,idx) if idx==name then return proxy end end;
__newindex=function(self,idx,val) if idx==name then proxy=val; getmetatable(self).callback(val) else rawset(self,idx,val) end end;
callback=function(val) print("Proxied variable set to "..tostring(val)) end;
})
end
请注意,这是
据我所知,唯一的方法是使用循环。您可以执行以下操作: