Lua:使用“local var = require(“ my lib”)”出现问题。
2017-5-23 11:45:55
收藏:0
阅读:153
评论:2
许多 Lua 脚本都包括添加模块到脚本中的操作:
local module = require("module")
但根据 lua-manual,这不是加载模块的正确方式。模块本身包括它们的模块名称,因此下面的代码就足以使用该模块:require("module"),例如 module.myfunction()。第一个用本地变量定义加载方式的示例仅将“true”写入模块变量,表示模块已成功加载。
奇怪的是,我在 Web 上看到这种加载方式 local module = require("module") 到处都是。大多数来自 Lua 社区的脚本由于这个错误无法工作。我也想知道为什么在 Web 上还没有找到有关此错误的问题。
接下来,实际加载模块有时也会导致奇怪的错误。例如:我有一个使用以下代码的脚本:
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...
点赞
用户1008957
在 Lua 5.2 中,规范的模块不再导出全局变量,而在 Lua 5.1 中导出全局变量。
除了使用 local 变量提高速度之外,使用 local module = require "module" 也应该用于与最新版本的 Lua 兼容。
2012-09-29 14:47:21
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
local module = require("module")创建了一个本地的变量,其中包含了该模块,除此以外还有一个默认的全局变量(当然,如果本地变量和全局变量重名了,本地变量会覆盖全局变量)。在 Lua 中,访问本地变量要比访问全局变量快很多,所以很可能这正是使用这种方式的原因所在。而你得到的错误很明显,你在加载模块时不应该添加文件扩展名。