我在Lua中使用基本模块时遇到问题。我有一个文件“ helloworld.lua”和另一个文件“ main.lua”。我想从第二个文件中的第一个文件调用一个函数。但是我遇到一个错误:
试图调用字段'printText'(一个nil值)
我的实际代码如下。有人可以告诉我问题出在哪里吗?
helloworld.lua
local module = {}
function module.printText()
print("Hello world")
end
return module
main.lua
hello = require("helloworld")
hello.printText()
答案 0 :(得分:1)
如评论中所述,这是正确的方法。如果存在冲突的helloworld
模块,或者您的lua状态正在运行并且正在修改文件而不启动新文件,则可能会出现问题。
require
仅将通过字符串传递的模块加载一次。选中package.loaded["helloworld"]
。您可以将其设置为nil,以便require可以再次加载文件:
package.loaded["helloworld"] = nil
hello = require("helloworld") -- will load it for sure