module - Lua: "local var = require("我的库有问题”)

标签 module lua require

<分区>

Possible Duplicate:
Why make global Lua functions local?

在社区的许多 lua 脚本中,我看到类似向脚本添加模块的内容:

local module = require("module")

但是根据lua-manual ,这不是加载模块的方式。模块本身在里面有它们的模块名称,所以

require("module")

就足以使用这样的模块:module.myfunction()。第一个带有本地定义的示例只是将“true”写入 module-var - 表示模块已成功加载。

奇怪的是,我在网络上到处都看到这种加载“local module = require("module")”。由于这个错误,我无法使用来自 lua 社区的大多数脚本。我也想知道为什么我在网上还没有发现任何关于这个的问题。

接下来的事情是,实际加载模块有时也会导致奇怪的错误。例如:我有一个带有

的脚本
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...

最佳答案

在 Lua 5.2 中,行为良好的模块不再像在 Lua 5.1 中那样导出全局变量。

除了 local 变量提供的速度提升外,使用 local module = require "module" shall 用于兼容最新的 Lua 版本。

关于module - Lua: "local var = require("我的库有问题”),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12653443/

相关文章:

javascript - Angular 6 Material MatFormField 显示为未知组件

python - 如何使用模块将 Python 回调公开给 Fortran

lua - 局部变量在 lua 中是如何工作的?

lua - 枚举带有尾随 nils 的变量返回值

linux - 如何在 linux 上安装 lua 模块

c - 开发 iptables 模块的最佳方法是什么

module - 在运行时使用同步语法导入 commonJS、AMD 和 ES6 模块

string - Lua:给定一个符号列表,遍历每个可能的 k 长度字符串

c++ - 引导构造函数的外定义(c++20)

javascript - nodejs require 不是 js 文件的函数