Lua学习之加载其他lua文件

您所在的位置:网站首页 require这么读 Lua学习之加载其他lua文件

Lua学习之加载其他lua文件

2023-08-19 11:44| 来源: 网络整理| 查看: 265

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 对应的文件

第一次使用 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 文件,读者可根据自己的实际情况添加对应的路径。

 

以上亲测有效。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3