函数参数作为另一个函数的名称?

我正在尝试整理一些代码并创建一个函数生成器。因此,我正在将一堆参数传递给创建嵌套函数的函数;其中第一个是嵌套函数的所需名称。

function gen (name)
return
 {
 function name ()
 return
  {
  ...
  }
 end
 }
end

然后我使用不同的名称调用 gen 函数以获取具有不同值的多个 name 函数。显然,它不能像我希望的那样工作。我得到的精确错误是

')' 意外遇到 'name'

令人惊讶的是,当我使用 name = function() 表示法时,我得到了一些其他远下游的错误。 我已经对代码进行了一些尝试,但我的知识不足以使用除了最初非常笨重的版本之外的任何结构。

更新#1

这个

function gen (self, name, arg2)
return
{
 [name] = function (arg3)
 return
 {
   data = arg3
 }
 end
}
end
for k,v in pairs (gen (name, "xarg")) do print(k,v) end
print (xarg)

返回

xarg    function: 0x1365390
nil

使用 _G[name] 我根本没有成功的运气。

更新#2

所以我还没有找到解决方案,并转而使用 t[name],代价是放弃了 (arg3)

点赞
用户107090
用户107090

如果你想创建一个名为 name 的全局函数,那么使用以下代码:

function gen (name)
  _G[name] = function ()
               -- 在这里编写函数体
             end
end
2018-02-19 22:58:55