Lua关于布尔变化事件?

时间:2015-07-10 09:47:20

标签: events lua boolean onchange

所以我在头脑风暴中编程,基本上是lua中的逻辑模拟器。我必须彻底检查整个系统,但我认为基于事件的操作可能比不断更新操作更好。

我有类似的东西:

local var1 = false
local var2 = false
while true do
  if key == "a" then
    var1 = not var1
  end
  if key == "s" then var2 = not var2 end
  var2 = var1
end

但我想要这样的事情:

local var1 = false
local var2 = false
while true do
  if key == "a" then
    var1 = not var1
  end
  if key == "s" then var2 = not var2 end
  if on.change(var1) then
    var2 = var1
  end
end

所以是的,我希望var2是独立的,我不希望它继续将自己设置为var1,如果var1已经改变,我只希望var2对var1作出反应。

如果我们查看第一个代码块,你会发现我无法独立控制var2,它总是将自己设置为var1,它可能会在很短的时间内将自己设置为var1。

如果我们查看第二个代码块,您可以看到我可以独立于var1控制var2,并让它仍然对var1做出反应。

现在最类似的事情就是做这样的事情:

local var1 = false
local var2 = false
while true do
  if key == "a" then
    var1 = not var1
    var2 = var1
  end
  if key == "s" then
    var2 = not var2
  end
end

但是我担心这实际上不可能实现,并且会减慢速度,因为循环很多,添加更多嵌套循环会让它慢下来......

所以请在第二个代码块上发布类似于事件的东西,我已经发布了类似的东西,但它很难实现,并且会有严重的副作用,比如嵌套循环,我是什么做。

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

你可以用metatables(伪代码)做类似的东西:

local mt = { __index = function(i,v)
    if i == "var1" then 
        var1 = v
        var2 = v
    end
end }

_G.setmetatable(mt)

但是我建议你去谷歌足够自己做一些库。