从 Lua 的另一个文件中调用函数/变量/表格

我正在使用 Lua 开发一个相当详细的项目,特别是在使用 LOVE2D。 我目前使用 require'file' 访问我的项目的不同部分,但这似乎是非常糟糕的形式。我遇到了在不同文件中使用相同名称的表格覆盖的问题。必须有一种专业而干净的方法来解决这个问题,但我还没有找到。有人能帮助我吗?

点赞
用户415823
用户415823

使用 require 是正确的方法。

将模块想象成在加载时执行的函数。它的返回值被缓存,并在后续的 require 调用中返回。就像你会在函数中使用 local 变量来限制范围一样,你也可以在模块中这样做。

我猜你的模块是以全局表的形式实现的:

mymodule = {}

function mymodule.foo()
  return 'bar'
end

而你的加载方式是:

require 'mymodule'

只需将模块表更改为 local 变量并返回它:

local mymodule = {}

function mymodule.foo()
  return 'bar'
end

return mymodule

然后,你可以使用任何你选择的名称加载模块:

local mymodule = require 'mymodule'

由于你不创建全局变量,所以不必担心覆盖其他模块。

上面使用的例子来自 lua-users.org 网站的模块教程。查看更多有关创建模块的信息。此外,在 post-module 时代编写 Lua 模块的方法也值得一读。

2016-06-22 00:12:26