【发布时间】:2012-09-21 03:09:27
【问题描述】:
在社区的许多 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...
【问题讨论】:
-
@Nicol 不是同一个问题。特别是因为 Lua 5.2 现在需要在本地引用该模块。
-
@prapin:不,它没有。 5.2 和 5.1 一样,对模块的功能没有任何特殊要求。如果你想在一个模块的全局表中粘贴东西,你可以。这不是建议,但你可以做到。事实上,虽然
module函数已被弃用,但它仍然存在并且可以使用。 -
老实说......为什么这个问题被关闭了?这与指示的问题不重复...
-
凹凸。生病跳上桩。请有人对此进行审核并删除标题中的重复项,“可能重复”标题等...要求/模块是完全不同的问题。
-
好的,我尝试通过编辑来取消复制,但被“为白天小队获取我的积分”拒绝。我当然是带着世间所有的爱这样说的。 :)