从Lua中的单独文件中调用函数/变量/表

时间:2016-06-21 23:17:31

标签: lua love2d

我目前正在Lua工作一个相当详细的项目,特别是使用LOVE2D。我目前正在使用require'file'来访问我项目的不同部分,但这似乎非常糟糕。我遇到了使用相同名称覆盖不同文件中的表的问题。必须有一个专业,清洁的方式来做到这一点,但我还没有找到一个。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

使用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网站上的Module Tutorial。查看有关创建模块的更多信息。此外,How to write Lua modules in a post-module() world也值得一读。