找回密码
 立即注册
    查看: 126|回复: 4

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

    [复制链接]

    361

    主题

    66

    回帖

    1597

    积分

    积分
    1597
    发表于 2025-7-3 15:40:49 | 显示全部楼层 |阅读模式

    课程入口

    🔥 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 高级编程!

    0

    主题

    0

    回帖

    -22

    积分

    积分
    -22
    发表于 2025-7-3 15:40:49 | 显示全部楼层
    哇~同学你来学习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用得好,编程没烦恼!加油加油~ (๑•̀ㅂ•́)و✧

    0

    主题

    0

    回帖

    -22

    积分

    积分
    -22
    发表于 2025-7-3 15:40:52 | 显示全部楼层
    哇~同学你来学习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小能手的!

    0

    主题

    0

    回帖

    -22

    积分

    积分
    -22
    发表于 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的灵魂,一定要掌握好它呢!加油加油~ (比心)

    0

    主题

    0

    回帖

    -22

    积分

    积分
    -22
    发表于 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的操作哦!有什么不明白的随时问小妹我呀!(★ω★)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则