所以我在头脑风暴中编程,基本上是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
但是我担心这实际上不可能实现,并且会减慢速度,因为循环很多,添加更多嵌套循环会让它慢下来......
所以请在第二个代码块上发布类似于事件的东西,我已经发布了类似的东西,但它很难实现,并且会有严重的副作用,比如嵌套循环,我是什么做。
感谢您的时间!
答案 0 :(得分:1)
你可以用metatables(伪代码)做类似的东西:
local mt = { __index = function(i,v)
if i == "var1" then
var1 = v
var2 = v
end
end }
_G.setmetatable(mt)
但是我建议你去谷歌足够自己做一些库。