variables - 检测变量的变化并做出相应的响应 [Lua]
问题描述
我想检查一个变量,看看它是否改变。我知道循环可能是可行的,但我不想使用它们。我希望检查响应的方式是,一旦变量发生变化,我可以选择相应地使用哪个函数。
解决方案
如果你真的希望它是透明的并且不太关心速度和可能破坏的东西,你可以使用元表:
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
请注意,这是
- 减缓
- 丑陋的
- 脆
- 一般只是一个坏主意
推荐阅读
- javascript - 刷新应用程序后如何更新状态 - React Native?
- python - 抓取表没有提供任何结果
- excel - EXCEL 2016 VBA:WorksheetFunction.Power() 不返回数字
- excel - 根据日期范围多次将行复制到另一个工作表
- ios - React-Native 错误:命令 PhaseScriptExecution 失败,退出代码为非零
- valgrind - 运行 valgrind 时是否可以忽略程序的标准输出?
- javascript - 从 url 中删除 #Hash 而不刷新。
- graphql - GraphQL 突变以将项目添加到现有数组字段
- c# - DirectorySearcher 不从 LDAP 查询返回任何结果(C#)
- android - Android Studio:如何从 JSON 数组内部解析 JSON 对象?