nod*_*ond 3 lua module require
可能重复:
为什么要将全局Lua函数设为本地?
在社区的许多lua脚本中,我看到类似于向脚本添加模块的内容:
local module = require("module")
Run Code Online (Sandbox Code Playgroud)
但根据lua-manual,这不是加载模块的方法.模块本身内部有模块名称,所以
require("module")
Run Code Online (Sandbox Code Playgroud)
就像这样使用模块就足够了:module.myfunction().使用local-definition的第一个示例只是将"true"写入module-var - 表示模块已成功加载.
这个问题是,我看到这种加载"本地模块=需要("模块")"在网络的任何地方.来自lua-community的大多数脚本由于此错误而无法正常工作.我也想知道为什么我还没有在网上发现任何相关问题.
接下来的事情是,实际加载模块有时会导致奇怪的错误.例如:我有一个脚本
require("purexml.lua")
Run Code Online (Sandbox Code Playgroud)
比我收到这个错误:
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'
Run Code Online (Sandbox Code Playgroud)
但这样做很好:
require("purexml")
Run Code Online (Sandbox Code Playgroud)
我错过了一些非常明显的东西吗?我顺便使用Lua 5.1.4 ......
在Lua 5.2中,表现良好的模块不再导出全局变量,就像在Lua 5.1中那样.
除了本地变量提供的速度增加之外,local module = require "module" 还应使用use来与最新的Lua版本兼容.
| 归档时间: |
|
| 查看次数: |
5606 次 |
| 最近记录: |