【问题标题】:Import functions from table as local functions in Lua从表中导入函数作为 Lua 中的本地函数
【发布时间】:2010-11-18 22:27:54
【问题描述】:

我想实现这一点(从 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'] 那样设置。想法?

【问题讨论】:

  • 对了,你到底想通过将它们设置为局部变量来实现什么?
  • 局部变量的访问速度(通常)比全局变量快得多。通常认为将常用的全局变量(尤其是其值在创建后有效地保持不变的函数)缓存在局部变量中以提高性能是一种很好的方式。

标签: scope lua


【解决方案1】:

据我所知,您不能按名称设置局部变量。你必须明确地这样做。

仅供参考,没有类似于_G_L 表的原因是因为词法范围。在多个作用域中可能有相同的局部变量名称,但它们不是相同的变量。你必须有 setlocal("foo", xxx) 之类的东西,但 Lua 没有。

【讨论】:

  • 有 debug.setlocal 但调试库不适用于普通编程。
【解决方案2】:

IIRC,我看到了metalua 的示例,它可以实现类似的功能。它对抽象语法树进行操作,因此可以在语言中引入新的关键字和语法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 2016-01-01
    • 2018-07-29
    • 2018-10-18
    • 1970-01-01
    • 2018-07-01
    • 2015-07-19
    • 1970-01-01
    相关资源
    最近更新 更多