如果这是一个非常基本的问题,我很抱歉,但我是初学者,并且在区分本地变量和全局变量方面存在问题。例如:
variable=0
local variable=0
function func()
local variable=0
variable=0
if variable==0 then
local variable=1
end
end
非常感谢任何帮助!
答案 0 :(得分:2)
(1)我有多少个单独的变量?
四:三个本地人和一个全球人。虽然“全局变量”只是函数环境中的一个字段(_G
)。
(2)在if语句块中重新分配了哪个变量?或者它是一个与所有其他变量分开的新变量?
创建一个新变量,将堆栈中的那些变为阴影。
(3)哪个变量是if语句测试?
第二个local
,在function func()
(4)如何在if语句块中的函数中为第一个局部变量设置一个新值?
在定义影响旧版local
的新variable=123
print(variable) -- prints 123
local variable=0
print(variable) -- prints 0
function func()
local variable=1
variable=1
print(variable) -- prints 1
if variable==1 then
print(variable) -- prints 1
local variable=5
print(variable) -- prints 5
end
print(variable) -- prints 1
end
func()
print(variable) -- prints 0
print(_G.variable) -- prints 123
之前,您必须先设置它。在那之后,这是不可能的(除了可能使用调试库)。
以下是您的示例,其中包含一些值编辑和一些打印语句,以演示Lua中的作用域规则:
{{1}}