Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Module Lua:与“问题”;本地变量=需要(“我的库”)_Module_Lua_Require - Fatal编程技术网

Module Lua:与“问题”;本地变量=需要(“我的库”)

Module Lua:与“问题”;本地变量=需要(“我的库”),module,lua,require,Module,Lua,Require,可能重复: 在社区中的许多lua脚本中,我看到类似于向脚本添加模块的内容: local module = require("module") 但是根据,这不是加载模块的方式。模块本身内部有其模块名称,因此 require("module") 只需使用如下模块即可:module.myfunction()。具有本地定义的第一个示例只是将“true”写入模块变量,表示模块已成功加载 有意思的是,我看到这种加载“localmodule=require(“module”)”的方式在web上随处可见。

可能重复:

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

local module = require("module")
但是根据,这不是加载模块的方式。模块本身内部有其模块名称,因此

require("module")
只需使用如下模块即可:module.myfunction()。具有本地定义的第一个示例只是将“true”写入模块变量,表示模块已成功加载

有意思的是,我看到这种加载“localmodule=require(“module”)”的方式在web上随处可见。由于这个错误,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…

local module=require(“模块”)
创建一个包含模块的local变量,除了默认的global(当然,局部阴影是全局的)。Lua中的本地用户访问速度要快得多,所以使用这种方法的原因很可能是性能


您得到的错误很明显,在加载模块时不能添加文件扩展名。

在Lua5.2中,行为良好的模块不再像在Lua5.1中那样导出全局变量


除了本地变量提供的速度增加外,还应使用本地模块=要求“模块”与最新Lua版本兼容。

@Nicol不是同一个问题。特别是因为Lua5.2现在要求在本地引用该模块。@prapin:不需要。与5.1一样,5.2对模块的功能没有任何特殊要求。如果您想在模块的全局表中粘贴内容,可以。不建议这样做,但你可以这样做。事实上,虽然
模块
功能已被弃用,但它仍然存在并可以使用。。。为什么这个问题被关闭了?这不是所示问题的重复…凹凸。我会跳到桩上。有人请缓和这一点,并删除重复的标题,“可能重复”标题等。。。要求/模块是完全不同的问题。好的,我试图通过编辑来取消重复,但被“为日队获取积分”拒绝。我说这句话当然是为了表达世界上所有的爱但不知何故,事实并非如此。我只得到一个从require(“模块”)返回的布尔变量。示例:local xml=require(“purexml”)print(xml)->true,然后当我尝试:xml:collect()时,控制台说:尝试索引本地“xml”(一个布尔值)(仍然使用Lua 5.1.4)啊,我想我现在明白了!!了解模块(…,package.seeall)或模块文件中使用的替代方法,即在末尾返回M的本地M={}--public接口。仔细阅读此文件会有所帮助:它与性能无关。使用局部变量而不是在全局空间中设置内容是构建代码的一种方式,这样可以减少“惊喜”。不幸的是,并非所有lua LIB都遵循此约定。