从表中导入函数作为Lua中的本地函数

时间:2009-08-12 11:45:27

标签: scope lua

我想实现这一点(从util表导入函数作为本地值):

function blah () 
 local x = util.x
 local y = util.y
 ...
end

无需明确引用每个函数,例如类似的东西:

function blah()
  for name,f in util do 
    ???
  end
end

不幸的是,没有本地表可以设置_G ['function_name_as_string']的设置方式。想法?

2 个答案:

答案 0 :(得分:3)

据我所知,您无法按名称设置本地变量。你必须明确地做。

Fyi,没有_L表类似于_G的原因是因为词汇范围。可以在多个范围中具有相同的局部变量名称,但它们不是相同的变量。你必须有一个setlocal("foo", xxx)类的东西,但Lua没有那个。

答案 1 :(得分:2)

IIRC,我已经看到metalua的一个例子,可以实现这样的功能。它在抽象语法树上运行,因此可以在语言中引入新的关键字和语法。