Lua:"local var = require("my lib")的问题



可能的重复:
为什么将全局Lua函数设为本地函数?

在社区的许多lua脚本中,我看到了类似于向脚本添加模块的东西:

local module = require("module")

但根据lua手册,这不是加载模块的方式。模块本身内部有其模块名称,因此

require("module")

就足够使用这样的模块了:module.myfunction()。第一个带有本地定义的例子只在模块var中写入"true",表示模块已成功加载。

奇怪的是,我看到这种加载"localmodule=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中那样导出全局变量。

除了本地变量提供的速度增加外,为了与最新的Lua版本兼容,还应使用local module = require "module"

local module = require("module")创建一个包含模块的局部变量,此外还有默认的global(当然,局部会遮蔽全局)。本地语言在Lua中的访问速度要快得多,所以性能很可能是使用它的原因。

您得到的错误是显而易见的,在加载模块时不能添加文件扩展名。

相关内容

  • 没有找到相关文章

最新更新