课程链接
这节课主要讲解了 Lua 语言中的模块使用、模块的调用方式、模块的加载机制,以及 类和对象的基本概念。以下是整理后的内容,关键词已标注并附上注解:
1. 模块的概念与作用
- 模块:类似于封装库,从 Lua 5.1 开始引入标准模块管理机制。可以把公用代码放到一个文件中,通过 API 接口形式在其他地方调用,有利于代码复用和降低耦合度。
- 模块的组成:模块通常是一个 表(table),可以包含 键值对(如变量) 和 函数。通过
return
返回这个表,供其他文件调用。
- 模块的调用方式:
- 原生
require
调用:通过 require("模块名")
加载模块,返回模块的内容(一个表)。
- 路径问题:模块文件的路径需要正确配置,否则会报错“未找到模块”。
- 加载特性:
require
只加载模块一次,后续调用直接从缓存中获取,不会重新加载。
2. 模块的定义与使用示例
- 定义模块:在一个
.lua
文件中,初始化一个表,插入变量和函数,最后通过 return
返回这个表。
- 调用模块:
- 使用
require
加载模块:
local API = require("myModule")
print(API.name) -- 输出:张三
print(API.add(3, 5)) -- 输出:8
- 路径问题:如果模块不在默认路径下,可以通过修改
package.path
添加自定义路径。
package.path = package.path .. ";./myModules/?.lua"
3. 模块的加载机制
package.path
:全局变量,定义了 Lua 查找模块文件的路径。
- 修改加载路径:可以通过修改
package.path
添加自定义路径,使得 Lua 能够加载指定目录下的模块文件。
- 加载策略:
require
会尝试从 Lua 文件或 C 库中加载模块,具体路径由 package.path
和 package.cpath
决定。
4. 类和对象的概念
- 类(Class):在 Lua 中没有原生的类概念,但可以通过 表(table) 模拟类。类是一个模板,定义了对象的属性和行为。
- 对象(Object):类的实例,是根据类模板创建的具体实体,占用内存资源。
5. 面向对象的优势
- 封装性:将数据和行为封装在一起,便于管理和复用。
- 可维护性:面向对象的代码更易于维护和扩展,尤其是在多人协作开发中。
- 实例化:可以根据同一个类创建多个不同的对象,每个对象都有独立的状态。
6. 其他基础知识点
- 迭代器:用于遍历表中的元素。
- 字符串操作:Lua 提供了丰富的字符串操作函数。
- 运算符:包括一元运算符和二元运算符,用于执行数学和逻辑运算。
总结
这节课详细讲解了 Lua 中模块的定义、调用和加载机制,以及类和对象的基本概念。通过实际示例演示了如何创建和使用模块,以及如何通过表模拟类和对象。这些内容对于后续的开发非常重要,尤其是模块的使用,将会在实际项目中频繁出现。
夸赞老师
老师讲解得非常详细,从基础概念到实际操作,一步步引导我们理解模块的使用和类与对象的关系。尤其是对 require
的特性讲解,让我对模块的加载机制有了更清晰的认识。老师还通过实际代码演示,让我们能够更好地理解和掌握这些知识。非常感谢老师的耐心讲解!