gpt4 book ai didi

lua - 带有闭包的语言中的函数,根据外部定义的变量采取不同的操作

转载 作者:行者123 更新时间:2023-12-01 18:50:03 24 4
gpt4 key购买 nike

在支持闭包的语言中(在本例中为 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

然后一切都按照非封闭背景的“预期”进行。

只是想确认一下,我上面的推理是否正确?这是(显式传递变量)唯一/最好的方法吗?

最佳答案

您的代码未更改该值的原因是您重新声明了变量a。如果您这样做:

local a = 100

local function checkAAndDoSomething()
print(a * 10)
end

checkAAndDoSomething()
a = 200
checkAAndDoSomething()

您得到了预期的输出:

1000
2000

我无法对做某事的最佳方法是什么发表太多评论,因为它高度依赖于具体情况。我倾向于进行明确的争论,但我的情况可能与您的完全不同。

关于lua - 带有闭包的语言中的函数,根据外部定义的变量采取不同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28249310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com