zoukankan      html  css  js  c++  java
  • Lua学习之加载其他lua文件

    Lua 中提供了模块的概念,模块类似一个封装库或者 C++ 中的一个类,可以将公用的部分提到一个文件中,以 API 的形式供其他 lua 文件调用。

    Lua 中的模块其实就是包含变量、函数等已知元素组成的 table, 本质上是一个 table。

    一、模块的声明

    创建一个名称为 LearnModule.lua 的文件,并在此文件中实现下列代码:

    -- 定义一个名为ModuleT的模块,模块的本质就是一个table,内部包含变量和函数等
    ModuleT = {}
    
    
    -- 定义一个变量
    ModuleT.constant = '这是一个常量'
    
    -- 定义一个
    function ModuleT.Fun1(  )
        print('这是一个公有函数')
    end
    
    
    local function Fun2()
        print('这是一个私有函数')
    end
    
    
    function ModuleT.Fun3( )
        Fun2()
    end
    
    return ModuleT

    二、在其他 lua 文件中使用 ModuleT 模块

    1. 首先创建另外一个 lua 文件,例如命名为 TestModule.lua。

    2. 通过 require 函数加载包含 ModuleT 模块的文件,代码如下:

    require("LearnModule")
    print(ModuleT.constant)
    print(ModuleT.Fun1)

    3. 打印结果为:

    ----learn to how to make module-----
    这是一个常量
    function: 0x7fa350604660

    三、require 函数使用说明

    • require 函数的使用
    -- name 表示定义的Module 所在的 lua 文件
    require("<name>")
    • 找不到 name 对应的文件

    第一次使用 require 函数加载指定模块的文件时,可能提示找不到对应的文件,原因在于 Lua 有一个默认的查找路径。通过 package.path 和 package.cpath 查找路径。

    -- 打印出当前默认搜索的动态库(so)路径
    print(package.cpath)
    
    -- 打印当前默认的用于搜索.lua文件的路径
    print(package.path)
    package.cpath:代表默认的 so 库的查找路径。
    package.path:代表默认的 lua 文件的查找路径。

    如果通过 require 函数加载指定的模块文件时,提示找不到对应的文件,则通过设置 package.path 路径即可。具体代码如下:
    package.path = package.path..";/Users/momo/Documents/workspace_lua/?.lua"
    print(package.path)


    上述代码表示将 package.path 的路径追加上 「/Users/momo/Documents/workspace_lua/」 路径下的所有 lua 文件,读者可根据自己的实际情况添加对应的路径。

    以上亲测有效。

  • 相关阅读:
    windows下cmd清屏命令cls
    mac电脑复制粘贴使用command+c command+v
    Git从远程仓库里拉取一条本地不存在的分支方法
    react系列笔记1 用npx npm命令创建react app
    golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息
    golang学习笔记9 beego nginx 部署 nginx 反向代理 golang web
    golang学习笔记8 beego参数配置 打包linux命令
    获取某一天所在周的开始日期和结束日期
    某一日期所在月份的天数
    获取某一日期所在月份的第一天日期或最后一天日期
  • 原文地址:https://www.cnblogs.com/calence/p/9867968.html
Copyright © 2011-2022 走看看