在Lua中,函数的参数应该在函数中(重新)进行本地化吗?

考虑:

function function_name(var_one, var_two)
    var_one = var_two
    return var_one
end

print( function_name("string_one", "string_two") )

local var_one = var_two 相反

现在,var_one 是一个全局变量吗,还是仍然属于函数的本地作用域?

应该使用 local var_one,还是已经在作用域中了?

点赞
用户298661
用户298661

不需要这样做。名称var_one已经是局部的了。你只是在清除原始值。如果你想显式地引用全局变量,必须使用 _G.var_one

2012-05-29 20:22:03
用户798374
用户798374

参数是一个本地变量(已经)。

当你引用它(分配),它会查找具有该名称的词法作用域变量。 它找到本地变量并使用它。

如果函数是一个闭包,就会将这个本地变量变成“upvalue”(非局部变量)。

如果它找不到本地变量,则执行全局查找。 如果您想强制进行全局查找,则只需手动进入全局表,因为这就是全局查找的方式。

如果您更改变量的分配以将其声明为本地变量,则实际上创建了一个新的本地变量,词法范围不同于参数,但在词法上隐藏了它。

2012-08-28 12:13:37