Function 在Lua中,函数参数是否应该(重新)定位在函数中?
考虑: function function_name(var_one, var_two) var_one = var_two return var_one end print( function_name("string_one", "string_two") ) 函数名称(变量1,变量2) 变量1=变量2 返回变量1 结束 打印(函数名称(“字符串一”、“字符串二”)) 与Function 在Lua中,函数参数是否应该(重新)定位在函数中?,function,lua,local-variables,Function,Lua,Local Variables,考虑: function function_name(var_one, var_two) var_one = var_two return var_one end print( function_name("string_one", "string_two") ) 函数名称(变量1,变量2) 变量1=变量2 返回变量1 结束 打印(函数名称(“字符串一”、“字符串二”)) 与local var\u one=var\u two相对应 var\u one现在是全局变量还是仍在
local var\u one=var\u two相对应
var\u one
现在是全局变量还是仍在函数局部范围内
是否应使用local var\u one
,或者它是否已在范围内?否,不需要这样做。名称var\u one
已经是本地名称。您只是在擦除原始值。如果您希望显式引用全局变量,则必须使用\u G.var\u one
。不,不需要这样做。名称var\u one
已经是本地名称。您只是在擦除原始值。如果希望显式引用全局变量,则必须使用\u G.var\u one
。参数是局部变量(已存在)
当您引用它(赋值)时,它会查找具有该名称的词汇范围变量。它找到局部变量并使用它
如果函数是闭包,则该局部变量将成为“upvalue”(非局部变量)
如果找不到局部变量,则执行全局查找。如果要强制进行全局查找,只需手动进入globals表,因为这就是全局查找
如果更改变量的赋值以将其声明为局部变量,则实际上是在创建一个新的局部变量,该变量在词汇范围内,与参数不同,但在词汇范围内将其隐藏。该参数是一个局部变量(已存在)
当您引用它(赋值)时,它会查找具有该名称的词汇范围变量。它找到局部变量并使用它
如果函数是闭包,则该局部变量将成为“upvalue”(非局部变量)
如果找不到局部变量,则执行全局查找。如果要强制进行全局查找,只需手动进入globals表,因为这就是全局查找
如果您更改变量的赋值以将其声明为局部变量,那么实际上您正在创建一个新的局部变量,在词汇范围内,它不同于参数,但在词汇范围内隐藏它。您试图实现什么?很难说这是怎么回事。如果没有这一点,就没有什么可以说你所拥有的在任何方面都是错误的。编辑这篇文章是为了解释我在问var_one
是否会成为全球性的。你想要实现什么?很难说这是怎么回事。如果没有这一点,就没有什么可以说你所拥有的在任何方面都是错误的。编辑这篇文章是为了解释我在问var_one
是否会成为全球性的。