可能重复:
为什么将全局 Lua 函数设为本地?
在社区的许多 lua 脚本中,我看到类似向脚本添加模块的内容:
local module = require("module")
但是根据lua-manual,这不是加载模块的方式。模块本身在里面有它们的模块名称,所以
require("module")
使用这样的模块就足够了:module.myfunction()。具有本地定义的第一个示例只是将“true”写入模块变量 - 表示模块已成功加载。
奇怪的是,我在网络上到处都能看到这种加载“local module = require("module")”。由于这个错误,来自 lua-community 的大多数脚本我都无法正常工作。我也想知道为什么我还没有在网上发现任何关于此的问题。
接下来是,实际上加载模块有时也会导致奇怪的错误。例如:我有一个脚本
require("purexml.lua")
比我得到这个错误:
no field package.preload['purexml.lua']
no file './purexml/lua.lua'
no file '/usr/local/share/lua/5.1/purexml/lua.lua'
no file '/usr/local/share/lua/5.1/purexml/lua/init.lua'
no file '/usr/local/lib/lua/5.1/purexml/lua.lua'
no file '/usr/local/lib/lua/5.1/purexml/lua/init.lua'
no file './purexml/lua.so'
no file '/usr/local/lib/lua/5.1/purexml/lua.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './purexml.so'
no file '/usr/local/lib/lua/5.1/purexml.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
但这样做很好:
require("purexml")
我在这里错过了一些非常明显的东西吗?顺便说一句,我使用 Lua 5.1.4...