1

我试图require在 LUA 中使用关键字来包含一个带有函数的文件,因为我是 LUA 的新手,首先我尝试了一个简单的打印函数:

全局函数.lua

local globalfunctions = {}

function printSomething()
    print("OOOK")
end

return globalfunctions

然后我试图调用这个函数写作:

local m = require "globalfunctions"
m.printSomething()

但是发生错误说“尝试调用字段 printSomething(nil 值)” 我做错了什么?

4

2 回答 2

2

问题是您声明了一个函数,但没有将其添加到您的模块中。

要将函数实际存储在由 返回的模块中require,您需要将其添加到您在模块末尾返回的表中。

globalfunctions.printSomething = printSomething

请注意,globalfunctions 是一个欺骗性的名称选择,因为 a)它本身就是一个局部变量 b)它将包含的函数也不是全局的,它们包含在您的模块中

其次:理想情况下,为了让你的模块表现得像大多数人期望的那样,你应该让函数本地化,以免污染全局命名空间(可能覆盖现有变量)。

于 2013-10-03T16:04:13.943 回答
1

您将全局函数设为本地值,这意味着它只能在本地运行,请尝试将本地更改为全局。

于 2013-10-03T16:03:42.497 回答