全局变量和本地变量

Globals and Locals

如果这是一个非常基本的问题,我很抱歉,但我是初学者,在区分局部变量和全局变量方面遇到了问题。例如:

variable=0
local variable=0
function func()
    local variable=0
    variable=0
    if variable==0 then
        local variable=1
    end
end

如有任何帮助,我们将不胜感激!

(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