我正在尝试在LUA中使用require
关键字来包含一个带有函数的文件,因为我是LUA的新手,我首先尝试了一个简单的打印函数:
globalfunctions.lua
local globalfunctions = {}
function printSomething()
print("OOOK")
end
return globalfunctions
然后我试着写这个函数写:
local m = require "globalfunctions"
m.printSomething()
但是发生错误,说“尝试调用字段printSomething(nil value)” 我做错了什么?
答案 0 :(得分:2)
问题是您声明了一个函数,但是没有将它添加到您的模块中。
要将函数实际存储在require
返回的模块中,您需要将其添加到模块末尾返回的表中。
globalfunctions.printSomething = printSomething
请注意,globalfunctions是一个欺骗性的名称选择,因为a)它是一个局部变量本身b)它将包含的函数也不是全局的,它们包含在你的模块中
其次:理想情况下,为了使您的模块像大多数人期望的那样运行,您可以将函数设置为本地函数,以便不污染全局命名空间(可能会覆盖现有变量)。
答案 1 :(得分:1)
您将全局函数设置为本地值,这意味着它只能在本地运行,尝试将本地函数更改为全局函数。