Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 在Lua中,函数参数是否应该(重新)定位在函数中?_Function_Lua_Local Variables - Fatal编程技术网

Function 在Lua中,函数参数是否应该(重新)定位在函数中?

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现在是全局变量还是仍在

考虑:

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 one
已经是本地名称。您只是在擦除原始值。如果您希望显式引用全局变量,则必须使用
\u G.var\u one

不,不需要这样做。名称
var\u one
已经是本地名称。您只是在擦除原始值。如果希望显式引用全局变量,则必须使用
\u G.var\u one

参数是局部变量(已存在)

当您引用它(赋值)时,它会查找具有该名称的词汇范围变量。它找到局部变量并使用它

如果函数是闭包,则该局部变量将成为“upvalue”(非局部变量)

如果找不到局部变量,则执行全局查找。如果要强制进行全局查找,只需手动进入globals表,因为这就是全局查找


如果更改变量的赋值以将其声明为局部变量,则实际上是在创建一个新的局部变量,该变量在词汇范围内,与参数不同,但在词汇范围内将其隐藏。

该参数是一个局部变量(已存在)

当您引用它(赋值)时,它会查找具有该名称的词汇范围变量。它找到局部变量并使用它

如果函数是闭包,则该局部变量将成为“upvalue”(非局部变量)

如果找不到局部变量,则执行全局查找。如果要强制进行全局查找,只需手动进入globals表,因为这就是全局查找


如果您更改变量的赋值以将其声明为局部变量,那么实际上您正在创建一个新的局部变量,在词汇范围内,它不同于参数,但在词汇范围内隐藏它。

您试图实现什么?很难说这是怎么回事。如果没有这一点,就没有什么可以说你所拥有的在任何方面都是错误的。编辑这篇文章是为了解释我在问
var_one
是否会成为全球性的。你想要实现什么?很难说这是怎么回事。如果没有这一点,就没有什么可以说你所拥有的在任何方面都是错误的。编辑这篇文章是为了解释我在问
var_one
是否会成为全球性的。