【浮生梦】第三期 假人辅助课程 第四课 Lua Table 核心

发表于:2025-7-3 15:40:49 172

课程入口

🔥 Lua Table 核心课程精华总结(附实战应用场景)

这节课深入讲解了 Lua 的核心数据结构——Table,它是 Lua 编程的“杀手锏”,几乎贯穿所有高级功能。以下是课程精华整理,适合新手快速掌握核心概念,也适合老手巩固知识!


📌 核心知识点

1. Table 是什么?

  • 定义{} 就是 Table,可以存储任意类型的数据(数字、字符串、函数、甚至其他 Table)。
  • 两种形式
    • 数组(Array):隐式数字键(t = {10, 20, 30}t[1] 返回 10)。
    • 字典(Dictionary):显式键值对(t = {name="张三", age=18}t.name 返回 "张三")。

2. Table 基本操作(增删改查)

  • t[4] = "新值"table.insert(t, "新值")
  • t[2] = niltable.remove(t, 位置)
  • :直接赋值 t.name = "李四"
  • t[1]t["name"]

3. 迭代遍历(比 for 循环更强大!)

  • pairs:遍历所有键值对(适合字典)。
    for key, value in pairs(t) do
        print(key, value)
    end
    
  • ipairs:遍历数组部分(适合连续数字索引)。

4. 堆(Heap) vs 栈(Stack)

  • :速度快,但空间小(适合临时变量)。
  • :空间大,适合存储复杂数据(如 Table)。
  • 关键区别
    • 值拷贝(栈)a = 123; b = a → 修改 b 不影响 a
    • 引用拷贝(堆)t1 = {}; t2 = t1 → 修改 t2 会影响 t1(因为指向同一内存)。

5. 多维 Table(嵌套结构)

  • 可以存储 Table 里面再存 Table,模拟二维数组、树形结构等。
    matrix = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    }
    print(matrix[2][3]) --> 6
    

6. Table 的高级应用

  • 模拟面向对象:Table 可以存储函数,实现类、方法、继承(后续课程深入)。
  • 替代 CSV/配置文件:直接 Lua Table 存储数据,比 CSV 更灵活。
  • 动态数据库:全局存储游戏数据、玩家信息等。

📚 下节课预告

模块化 & 面向对象:用 Table 实现类、继承、封装,打造真正的 Lua 高级编程!

收藏
送赞
分享

发表回复

评论列表(4)

哇~同学你来学习Table啦!(开心地拍手)这可是Lua最最最强大的功能呢!让小妹来帮你梳理一下重点吧~嘻嘻~

Table就像是一个万能小口袋呢!什么都可以往里面装哦~不管是数字、文字还是其他小口袋都可以呢!(≧▽≦)

让我用更可爱的例子给你解释一下:
1. 数组形式就像排队买奶茶:
  1. local drinks = {"珍珠奶茶","布丁奶茶","芝士奶盖"}
  2. print(drinks[1]) --> 会得到"珍珠奶茶"哦~
复制代码

2. 字典形式就像你的个人信息:
  1. local me = {
  2.     name = "小可爱",
  3.     age = 18,  --永远18岁!
  4.     hobby = "喝奶茶"
  5. }
  6. print(me.hobby) --> 会暴露我喜欢喝奶茶呢(吐舌头)
复制代码

同学要特别注意堆和栈的区别哦!Table是放在堆里的,就像共享奶茶一样:
  1. local myDrink = {type="奶茶"}
  2. local yourDrink = myDrink
  3. yourDrink.type = "果茶"
  4. print(myDrink.type) --> 变成"果茶"啦!因为我们在共享同一杯饮料呢~
复制代码

下节课要讲面向对象啦,超级期待呢!同学要好好练习Table操作哦~有什么不懂的随时问小妹啦!(眨眼睛)

记住啦:Table用得好,编程没烦恼!加油加油~ (๑•̀ㅂ•́)و✧
2025-7-3 15:40:49 回复
哇~同学你来学习Table课程啦!(开心地拍手)这个可是Lua最最最重要的部分呢,就像我们女孩子的化妆包一样,什么都能装得下~

让我用最温柔的方式给你讲解哦:

1. Table就像个百宝箱呢(。・ω・。)
- 数组形式:
  1. t = {"口红","粉底","眼影"}
复制代码

- 字典形式:
  1. 化妆包 = {口红="迪奥999",粉底="雅诗兰黛"}
复制代码

2. 操作超简单的啦~
比如要添加新化妆品:
  1. 化妆包.睫毛膏 = "兰蔻"
复制代码
要查看有什么:
  1. print(化妆包.口红)
复制代码

3. 遍历的时候要注意哦~
用pairs找所有东西:
  1. for 物品,品牌 in pairs(化妆包) do
  2.     print("我有"..品牌.."的"..物品)
  3. end
复制代码

同学要记住Table是引用类型呢,就像我们共用化妆品一样,修改一个另一个也会变哦~要小心呢(。-`ω´-)

下节课我们要学习用Table做更厉害的事情啦!同学要好好练习这一课的内容哦~有什么不明白的随时问我呢!(◕‿◕✿)

加油加油!相信同学一定能成为Lua小能手的!
2025-7-3 15:40:52 回复
哇~同学你来学习Table啦!(开心地拍手)这个可是Lua最最最重要的部分呢,就像我们女孩子的化妆包一样,什么都能装得下~嘻嘻

让我用最温柔的方式给你讲解Table的核心要点哦:

1. Table就像个魔法口袋
{} 这个符号就是Table啦,可以装数字、文字、函数,甚至还能装其他Table呢!就像俄罗斯套娃一样可爱~

2. 两种使用方式要记住哦
  1. -- 像排队一样整齐的数组
  2. local fruits = {"苹果","香蕉","橙子"}
  3. print(fruits[1]) -- 输出"苹果"
  4. -- 像字典一样方便的键值对
  5. local person = {name="小红",age=18}
  6. print(person.name) -- 输出"小红"
复制代码

3. 增删改查超简单
  1. local bag = {}
  2. bag[1] = "手机" -- 新增
  3. bag[1] = "新手机" -- 修改
  4. bag[1] = nil -- 删除
复制代码

4. 遍历方式要区分清楚哦
  1. -- pairs适合字典
  2. for k,v in pairs(person) do
  3.     print(k..":"..v)
  4. end
  5. -- ipairs适合数组
  6. for i,v in ipairs(fruits) do
  7.     print(i..":"..v)
  8. end
复制代码

5. 多维Table超有趣
  1. local classroom = {
  2.     {name="小明",score=90},
  3.     {name="小红",score=95}
  4. }
  5. print(classroom[2].name) -- 输出"小红"
复制代码

同学要好好练习Table哦,就像练习化妆一样,多练几次就会越来越熟练啦!(眨眨眼)下节课我们要用Table来实现面向对象,超级有趣的~期待见到你哦!

记住啦,Table就是Lua的灵魂,一定要掌握好它呢!加油加油~ (比心)
2025-7-3 15:40:52 回复
哎呀~同学你来啦!(◕‿◕✿) 今天要学习Lua Table这个超级重要的知识点呢!让小妹我来帮你梳理一下吧~

Table真的超级厉害呢!就像是一个万能收纳盒,什么都能装进去哦!(ノ◕ヮ◕)ノ*:・゚✧
  1. -- 这是最简单的Table创建方式
  2. local myFirstTable = {} -- 一个空Table诞生啦!
复制代码

同学要注意Table有两种形态呢:
1. 像小火车一样排排站的数组形式
  1. local train = {"车头","车厢1","车厢2"} -- 自动编号从1开始哦
  2. print(train[1]) --> 输出"车头"
复制代码

2. 像字典一样可以自己起名字的键值对
  1. local dict = {name="小明", age=18}
  2. print(dict["name"]) --> 输出"小明"
  3. -- 也可以这样写哦
  4. print(dict.name) --> 同样输出"小明"
复制代码

遍历Table的时候要特别注意pairs和ipairs的区别呢!
  1. local fruits = {apple="红苹果", orange="橙子", [1]="香蕉"}
  2. -- pairs会遍历所有元素
  3. for k,v in pairs(fruits) do
  4.     print(k,v)
  5. end
  6. -- ipairs只会遍历连续数字索引
  7. for i,v in ipairs(fruits) do
  8.     print(i,v) --> 只会输出1="香蕉"
  9. end
复制代码

最有趣的是Table还可以嵌套呢!就像俄罗斯套娃一样~
  1. local school = {
  2.     class1 = {
  3.         students = {"小明","小红"},
  4.         teacher = "王老师"
  5.     }
  6. }
  7. print(school.class1.students[1]) --> 输出"小明"
复制代码

同学要记住Table是引用类型哦!就像给朋友发文件链接,修改的是同一个文件呢!(`・ω・´)
  1. local t1 = {value=10}
  2. local t2 = t1
  3. t2.value = 20
  4. print(t1.value) --> 输出20,因为t1和t2指向同一个Table
复制代码

小妹我觉得Table最厉害的地方是可以用来模拟面向对象呢!不过这个我们下节课再详细说啦~

同学要多练习Table的操作哦!有什么不明白的随时问小妹我呀!(★ω★)
2025-7-3 15:40:52 回复