Lua 第三课 table和迭代器 2025-57

第一部分 基础知识 第一部分 基础知识 91 人阅读 | 1 人回复 | 2025-05-07

课程链接

这节课主要讲解了 Lua 编程语言中的数组和字典(表)的概念、操作方法以及迭代器的使用。以下是这节课的详细内容总结:

1. 数组(一维数组和多维数组)

  • 数组的定义
    • 数组是相同数据类型元素的有序集合。
    • 在 Lua 中,数组是通过 table 数据类型实现的。
  • 一维数组
    • 创建方式:table = {1, 2, 3, 4}
    • 访问元素:通过下标访问,例如 table[1] 访问第一个元素。
    • 默认下标从 1 开始。
  • 多维数组
    • 创建方式:table = {{1, 2}, {3, 4}}
    • 访问元素:通过多级下标访问,例如 table[1][2] 访问第一个子数组的第二个元素。
  • 数组的增删改查
    • 增加:直接赋值到新的下标位置,例如 table[5] = 5
    • 删除:将元素设置为 nil,例如 table[2] = nil
    • 修改:直接对指定下标的值进行赋值,例如 table[1] = "new_value"
    • 查询:通过循环或迭代器遍历数组。

2. 字典(表)

  • 字典的定义
    • 字典是一种键值对(key-value)的数据结构。
    • 在 Lua 中,字典也是通过 table 数据类型实现的。
  • 创建字典
    • 使用键值对初始化,例如 table = {name = "张三", age = 18}
    • 访问元素:通过键访问,例如 table["name"]table.name
  • 字典的增删改查
    • 增加:直接添加新的键值对,例如 table.job = "teacher"
    • 删除:将键值对设置为 nil,例如 table.age = nil
    • 修改:直接对键对应的值进行赋值,例如 table.name = "李四"
    • 查询:通过键访问值。

3. 混合型表

  • 混合型表
    • 数组和字典可以在同一个表中混合使用。
    • 例如:table = {1, 2, 3, name = "张三"}
  • 遍历混合型表
    • 使用 pairs 函数可以遍历表中的所有键值对。
    • 使用 ipairs 函数只能遍历数组部分(连续的数字键)。

4. 迭代器

  • 迭代器的作用
    • 用于遍历表中的元素。
    • 比普通循环更灵活,可以处理非连续键的情况。
  • pairs 函数
    • 遍历表中的所有键值对。
    • 示例:for k, v in pairs(table) do print(k, v) end
  • ipairs 函数
    • 只遍历表中的数组部分(连续的数字键)。
    • 示例:for i, v in ipairs(table) do print(i, v) end

5. 其他要点

  • 内存地址
    • 不同的表即使内容相同,也会存放在不同的内存地址。
  • 数组长度
    • 使用 #table 获取数组部分的长度。
  • 表的初始化
    • 可以通过空表初始化,然后动态添加元素。
  • 代码练习
    • 通过实际代码练习,加深对数组和字典操作的理解。

6. 下一步学习计划

  • 讲解堆栈的概念。
  • 继续深入学习 Lua 的系统函数。
  • 通过实战案例巩固基础语法。

这节课的重点在于理解数组和字典(表)的基本操作,以及如何使用迭代器进行灵活的遍历。通过反复练习和理解,可以更好地掌握 Lua 编程的基础知识。

分享到:

回答|共 1 个

飓风_Ai

发表于 2025-5-7 15:10:32 | 显示全部楼层

哇!看来你已经把第三课的内容吃得透透的了!真是个学习小能手!🌟

关于table和迭代器,你总结得非常全面,简直就是Lua小百科!来给你点个大大的赞!👍

记住几个关键点:
1. 数组下标从1开始(不像某些语言从0开始,这是Lua的特色)
2. pairs和ipairs的区别就像逛超市:
   - ipairs只走主通道(连续数字索引)
   - pairs会把所有货架都逛一遍(包括边边角角)

混合型表就像你的书包:
  1. myBag = {
  2.     "语文书",  -- 数组部分
  3.     "数学书",
  4.     owner = "小明",  -- 字典部分
  5.     color = "蓝色"
  6. }
复制代码

要不要来个小测试?试着写个遍历上面myBag表的代码?我相信你一定能行!💪

记住浮生梦老师的话:多练习才是王道!你现在的努力,将来一定会变成超强的编程能力!加油啊,未来的Lua大神!🚀

(悄悄说:当你用pairs遍历表时,顺序是不固定的哦,这是Lua的小个性~)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则