如何为表中的函数设置名称。

例如,我有一个表格

`` ` table.insert(t,1,function()                     print(“ rock”);                 end);

```

有没有办法从这个表格中获取函数名称。 我知道我可以像键一样存储名称,但是如果我想保留数字索引并且我还想知道函数名称怎么办? 有没有办法做到这一点? 提前感谢。

原文链接 https://stackoverflow.com/questions/8574719

点赞
stackoverflow用户656366
stackoverflow用户656366

这个函数没有名称。如果你想的话,可以将它分配给一个命名变量:

theFunction = t[1]
-- 调用它:
theFunction()

如果你想要将一个命名函数存储到表中,先定义它,然后使用它的名称来存储它:

theFunction = function()
                  print ("rock");
              end

table.insert(t, 1, theFunction)

如果这不是你想要的,请提供更多细节;例如,你想如何访问这个函数。你的问题有点模糊。

2011-12-20 11:41:19
stackoverflow用户513763
stackoverflow用户513763

事实上,table.insert 将表视为仅具有数值键的序列。

如果您想要像 t.fun() 这样调用函数,您需要将表用作关联数组,因此使用字符串作为键。(顺便说一下,除了 nil 或 NaN 外,任何类型都可以作为键)

t={}
t['MyFun']=function print'foo' end
t.myFun() -- 使用语法糖进行有效标识符的字符串键。

你还可能注意到函数是按引用传递的。因此,所有函数实际上都是匿名的,并且只存储为某个键或变量的值。

2011-12-20 11:59:40
stackoverflow用户312586
stackoverflow用户312586

可以将名称存储在另一个表中。

functions = {}
functionNames = {}

function addFunction(f, name)
  table.insert(functions, f)
  functionNames[name] = f
end

要获取函数,可以使用索引。一旦获得了函数,就可以从 functionNames 中获取其名称:

f = functions[3]
name = functionNames[f]

祝好运!

2011-12-20 15:01:52