Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Variables_Lua_Global Variables - Fatal编程技术网

Function 在Lua中将函数赋值给全局变量

Function 在Lua中将函数赋值给全局变量,function,variables,lua,global-variables,Function,Variables,Lua,Global Variables,这是示例测试代码 s="\\command{sample execution}" u=string.gsub(s,"\\(%b{})",print) 它工作良好,因为打印是全局功能。我定义函数myprint如下 myprint = function(x,y) return print(x,y) end 现在命令u=string.gsub(s,“\\(%b{})”,myprint)不起作用。这是因为myprint不像print那样是全局变量。所以我想问的基本问题是“如何将函数分配给Lua中

这是示例测试代码

s="\\command{sample execution}"
u=string.gsub(s,"\\(%b{})",print)
它工作良好,因为打印是全局功能。我定义函数myprint如下

myprint = function(x,y)
  return print(x,y)
end

现在命令
u=string.gsub(s,“\\(%b{})”,myprint)
不起作用。这是因为myprint不像print那样是全局变量。所以我想问的基本问题是“如何将函数分配给Lua中的全局变量?”

您只需要写:

global_function_1=函数(arg)
--身体
结束
或者使用语法糖替代:

函数全局函数函数2(arg)
--身体
结束
确保执行此操作的部分没有具有选定名称的局部变量。例如,以下函数中没有一个是全局函数:

本地条
本地函数foo(arg)
地方玉米
函数arg()结束
zee=函数()结束
功能条()结束
结束
请注意,我完全忽略了对表成员的赋值,忽略了
\u G
\u ENV
的存在,我们还是这样吧

我认为值得一提的是,
string.gsub
(或任何函数调用)并不关心函数(或任何参数)是本地的还是其他的:

local str=“abc”
本地功能fn(x)打印(x)结束
string.gsub(str,“%a”,fn)
产出:

a
b
c

这个样品不起作用。模式
“\\(%b{})”
s
中的任何内容都不匹配<代码>“\\%a+(%b{})”不匹配。在这之后,一切都很好与提供的代码。谢谢。我弄错了。我在string.gsub之后定义函数。需要在调用string.gsub之前定义它。