全局变量和本地变量
Globals and Locals
如果这是一个非常基本的问题,我很抱歉,但我是初学者,在区分局部变量和全局变量方面遇到了问题。例如:
variable=0
local variable=0
function func()
local variable=0
variable=0
if variable==0 then
local variable=1
end
end
- 我有多少个单独的变量?
- 在 if 语句块中重新分配了哪个变量?或者它是一个独立于所有其他变量的新变量?
- if 语句测试的是哪个变量?
- 如何为 if 语句块内的函数中的第一个局部变量设置新值?那不就是实例化一个仅限于 if 语句块的新变量吗?
如有任何帮助,我们将不胜感激!
(1) How many separate variables do I have?
四个:三个本地和一个全球。虽然 'global variable' 只是函数环境中的一个字段 (_G
).
(2) Which variable is being reassigned in the if statement block? Or is it a new variable separate from all the others?
正在创建一个新变量,隐藏堆栈中更上层的变量。
(3) Which variable is the if statement testing for?
第二个local
,定义在function func()
之后
(4) How do I set a new value to the 1st local variable in the function inside my if statement block?
您必须先设置它,然后才能定义覆盖旧 local
的新 local
。在那之后,这是不可能的(除了调试库)。
这是您的示例,其中编辑了一些值和一些打印语句,以演示 Lua 中的范围规则:
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
如果这是一个非常基本的问题,我很抱歉,但我是初学者,在区分局部变量和全局变量方面遇到了问题。例如:
variable=0
local variable=0
function func()
local variable=0
variable=0
if variable==0 then
local variable=1
end
end
- 我有多少个单独的变量?
- 在 if 语句块中重新分配了哪个变量?或者它是一个独立于所有其他变量的新变量?
- if 语句测试的是哪个变量?
- 如何为 if 语句块内的函数中的第一个局部变量设置新值?那不就是实例化一个仅限于 if 语句块的新变量吗?
如有任何帮助,我们将不胜感激!
(1) How many separate variables do I have?
四个:三个本地和一个全球。虽然 'global variable' 只是函数环境中的一个字段 (_G
).
(2) Which variable is being reassigned in the if statement block? Or is it a new variable separate from all the others?
正在创建一个新变量,隐藏堆栈中更上层的变量。
(3) Which variable is the if statement testing for?
第二个local
,定义在function func()
(4) How do I set a new value to the 1st local variable in the function inside my if statement block?
您必须先设置它,然后才能定义覆盖旧 local
的新 local
。在那之后,这是不可能的(除了调试库)。
这是您的示例,其中编辑了一些值和一些打印语句,以演示 Lua 中的范围规则:
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