在支持闭包的语言中(在这种情况下为Lua)有什么方法可以检查外部变量的值而不将其作为变量传递给函数?
当我执行以下操作时:
local a = 100
local function checkAAndDoSomething()
print(a * 10)
end
checkAAndDoSomething()
local a = 200
checkAAndDoSomething()
我明白了:
1000
1000
我想到的解决方案是将变量作为参数明确地传递给函数,如
local function checkAAndDoSomething(a)
print(a * 10)
end
然后一切都按照"预期"来自非关闭背景。
只是想确认一下,我的推理是否正确?这是(明确地传递变量)唯一/最好的解决方法吗?
答案 0 :(得分:5)
您的代码未更改值的原因是您重新声明了变量a
。如果你这样做:
local a = 100
local function checkAAndDoSomething()
print(a * 10)
end
checkAAndDoSomething()
a = 200
checkAAndDoSomething()
你得到了你期望的输出:
1000
2000
我无法评论最佳做事方式是什么,因为它高度依赖于这种情况。我倾向于明确的论点,但我的情况可能与你的完全不同。