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之前定义它。