【问题标题】:Global function in lualua中的全局函数
【发布时间】:2012-08-08 01:56:10
【问题描述】:

有没有办法让 Lua 中的函数可以从项目中的任何模块访问,而无需首先要求它?

类似:

module(..., package.seeall);
function globFoo()
       print('global foo called');
end

并从其他地方调用它,比如 main

--main

globFoo();

不需要?

【问题讨论】:

  • 你为什么想要那个?
  • 这样我就可以在我的项目中随处访问某些功能,而不必经历需要它的(尽管是轻微的)不便。

标签: function lua global


【解决方案1】:

模块只是一个 Lua 脚本。你可以在那里做任何你想做的事;您甚至不必在模块脚本中调用module。事实上,modulegenerally considered harmful these days,这就是它在 Lua 5.2 中被弃用的原因。

真的,只需移动代码即可:

function globFoo()
       print('global foo called');
end
module(..., package.seeall); --Module created after global function

所以是的,您可以让模块修改全局表。我非常建议您不要这样做(因为它会在 Lua 脚本之间创建隐式排序,这使得很难知道哪个脚本使用了哪些东西)。但你可以做到。

【讨论】:

    【解决方案2】:

    这是如何完成的示例:

    在global.lua中(全局函数所在的地方):

    globalFunction1 = function(params)
        print("I am globalFunction1")
    end
    

    在调用文件中,caller.lua:

    globalFunction1(params)    -- This will call the global function above
    

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 2014-01-31
      • 2020-07-06
      • 2014-04-01
      • 1970-01-01
      • 2018-07-11
      相关资源
      最近更新 更多