Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 检测变量的变化并相应地响应[Lua]_Variables_Lua - Fatal编程技术网

Variables 检测变量的变化并相应地响应[Lua]

Variables 检测变量的变化并相应地响应[Lua],variables,lua,Variables,Lua,我想检查一个变量,看看它是否改变。我知道这可能是可行的循环,但我不想使用这些。我希望检查做出响应的方式是,一旦变量发生变化,我可以相应地选择使用哪个函数。据我所知,唯一的方法就是使用循环。不过,您可以这样做: var=“你好,世界!” 已更改的\u var=var 函数onChangedVar() --当变量发生变化时,无论您希望发生什么 结束 尽管如此 如果var~=unchanged\u var,则 onChangedVar() 打破 结束 结束 如果您真的希望这是透明的,并且不太关心速度和

我想检查一个变量,看看它是否改变。我知道这可能是可行的循环,但我不想使用这些。我希望检查做出响应的方式是,一旦变量发生变化,我可以相应地选择使用哪个函数。

据我所知,唯一的方法就是使用循环。不过,您可以这样做:

var=“你好,世界!”
已更改的\u var=var
函数onChangedVar()
--当变量发生变化时,无论您希望发生什么
结束
尽管如此
如果var~=unchanged\u var,则
onChangedVar()
打破
结束
结束

如果您真的希望这是透明的,并且不太关心速度和可能破坏的东西,您可以使用元表:

local name=“proxied”--变量的名称
做本地代理吗
可设置图元(_G{
__索引=函数(self,idx),如果idx==名称,则返回代理端;
__newindex=function(self,idx,val),如果idx==name,那么proxy=val;getmetatable(self).callback(val)else-rawset(self,idx,val)end;
回调=函数(val)打印(“代理变量设置为“.tostring(val))结束;
})
结束
请注意,这是

  • 丑陋的
  • 易碎的
  • 总的来说,这是个坏主意

不可能。如果编程语言必须检测每个变量更改的事件挂钩,那么它的速度会非常慢。您可以编写一个函数,在变量可能更改的任何情况下都可以调用该函数。如果没有关于您的问题的更多细节,我就不能告诉您更多了。如果允许使用表,您可以使用表和元方法来完成您想要的操作