• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Lua极简入门指南(六):模块

    从用户的角度来看,一个模块能够通过 require 加载并返回一个 table,模块导出的接口都被定义在此 table 中(此 table 被作为一个 namespace)。所有的标准库都是模块。标准库被预先加载了,就像这样:

    复制代码 代码如下:

    math = require 'math'
    string = require 'string'

    require 函数

    使用 require 函数加载模块能够避免多次重复加载模块。加载一个模块:

    复制代码 代码如下:

    require 'modulename'

    模块名(modulename)不那么准确的来说就是一个文件名(Lua 文件或者是 C 库)。一个模块被加载后会被缓存到 pacakge.loaded[modulename] 中。看一个例子:

    复制代码 代码如下:

    -- test.lua
    print 'Hello World'

    在 test.lua 的相同目录下创建 main.lua 文件:

    复制代码 代码如下:

    -- main.lua
    require 'test'

    我们可以尝试多次 require test.lua 文件,但最终只会输出一次 Hello World。如果我们希望 require 重新加载模块,那么可以清理 package.loaded:

    复制代码 代码如下:

    package.loaded[modulename] = nil

    范例:

    复制代码 代码如下:

    require 'test'  --> Hello World
    package.loaded.test = nil
    require 'test'  --> Hello World

    编写模块

    编写一个模块很简单,我们先创建一个 table 然后把需要导出的接口放入 table 中,最后返回此 table:

    复制代码 代码如下:

    -- test.lua
    local exports = {}
     
    function exports.foo()
        print 'Hello World'
    end
     
    return exports

    模块的返回值会被赋值给 package.loaded[modulename]:

    复制代码 代码如下:

    assert(require 'test' == package.loaded.test)

    如果模块不返回值,那么 package.loaded[modulename] 的值将为 true:

    复制代码 代码如下:

    -- 假定 test.lua 是一个空文件
    local t = require 'test'
    print(t)                    --> true
    print(package.loaded.test)  --> true

    更多的编写模块的方法见:http://lua-users.org/wiki/ModulesTutorial

    查找模块

    如果一个模块使用 Lua 编写,那么将在 package.path 中查找,如果一个模块使用 C 编写,那么将在 package.cpath 中查找。package.path 和 package.cpath 是一个分号分隔的路径列表,例如:

    复制代码 代码如下:

    C:\bin\lua\lua\&;.lua;C:\bin\lua\lua\&;\init.lua;C:\bin\lua\&;.lua;C:\bin\lua\&;\init.lua;.\&;.lua

    每一个路径都有一个 ?,真正的查找路径是将 ? 替换为模块名之后的路径。

    实际上,我们可以自定义查找模块的规则(通过向 package.searchers 中添加适当的 searcher 函数实现),例如我们可以把所有模块保存在一个加密并压缩的 zip 文件中。

    一个模块命名为 mod.sub,其是 mod 的子模块。在查找模块时,mod.sub 中的 . 号会被转换为目录分隔符。假定路径列表如下:

    复制代码 代码如下:

    C:\bin\lua\lua\&;.lua;.\&;.lua

    那么 require ‘a.b' 将尝试打开文件:

    复制代码 代码如下:

    C:\bin\lua\lua\a\b.lua
    .\a\b.lua

    您可能感兴趣的文章:
    • Lua脚本语言简明入门教程
    • Lua极简入门指南(一):基础知识篇
    • Lua极简入门指南(三): loadfile和错误处理
    • Lua极简入门指南(一):函数篇
    • Lua极简入门指南:全局变量
    • lua脚本语言快速入门教程
    • Lua入门学习笔记
    • Lua 极简入门指南(七):面向对象编程
    • Lua脚本语言基本语法快速入门教程
    • Lua语言新手简单入门教程
    上一篇:Lua极简入门指南:全局变量
    下一篇:Lua 极简入门指南(七):面向对象编程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Lua极简入门指南(六):模块 Lua,极简,入门,指南,六,模块,