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