浮生A梦 发表于 2025-7-3 15:40:49

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

<p><a href="https://acnr1yklaaqz.feishu.cn/minutes/obcnf9p15j199lx42x748kke?from=from_copylink">课程入口</a></p>
<h3><strong>🔥 Lua Table 核心课程精华总结(附实战应用场景)</strong></h3>
<p>这节课深入讲解了 <strong>Lua 的核心数据结构——Table</strong>,它是 Lua 编程的“杀手锏”,几乎贯穿所有高级功能。以下是课程精华整理,适合新手快速掌握核心概念,也适合老手巩固知识!</p>
<hr />
<h2><strong>📌 核心知识点</strong></h2>
<h3><strong>1. Table 是什么?</strong></h3>
<ul>
<li><strong>定义</strong>:<code>{}</code> 就是 Table,可以存储任意类型的数据(数字、字符串、函数、甚至其他 Table)。</li>
<li><strong>两种形式</strong>:
<ul>
<li><strong>数组(Array)</strong>:隐式数字键(<code>t = {10, 20, 30}</code>,<code>t</code> 返回 <code>10</code>)。</li>
<li><strong>字典(Dictionary)</strong>:显式键值对(<code>t = {name=&quot;张三&quot;, age=18}</code>,<code>t.name</code> 返回 <code>&quot;张三&quot;</code>)。</li>
</ul>
</li>
</ul>
<h3><strong>2. Table 基本操作(增删改查)</strong></h3>
<ul>
<li><strong>增</strong>:<code>t = &quot;新值&quot;</code> 或 <code>table.insert(t, &quot;新值&quot;)</code></li>
<li><strong>删</strong>:<code>t = nil</code> 或 <code>table.remove(t, 位置)</code></li>
<li><strong>改</strong>:直接赋值 <code>t.name = &quot;李四&quot;</code></li>
<li><strong>查</strong>:<code>t</code> 或 <code>t[&quot;name&quot;]</code></li>
</ul>
<h3><strong>3. 迭代遍历(比 for 循环更强大!)</strong></h3>
<ul>
<li><strong><code>pairs</code></strong>:遍历所有键值对(适合字典)。
<pre><code class="language-lua">for key, value in pairs(t) do
    print(key, value)
end
</code></pre>
</li>
<li><strong><code>ipairs</code></strong>:遍历数组部分(适合连续数字索引)。</li>
</ul>
<h3><strong>4. 堆(Heap) vs 栈(Stack)</strong></h3>
<ul>
<li><strong>栈</strong>:速度快,但空间小(适合临时变量)。</li>
<li><strong>堆</strong>:空间大,适合存储复杂数据(如 Table)。</li>
<li><strong>关键区别</strong>:
<ul>
<li><strong>值拷贝(栈)</strong>:<code>a = 123; b = a</code> → 修改 <code>b</code> 不影响 <code>a</code>。</li>
<li><strong>引用拷贝(堆)</strong>:<code>t1 = {}; t2 = t1</code> → 修改 <code>t2</code> 会影响 <code>t1</code>(因为指向同一内存)。</li>
</ul>
</li>
</ul>
<h3><strong>5. 多维 Table(嵌套结构)</strong></h3>
<ul>
<li>可以存储 Table 里面再存 Table,模拟二维数组、树形结构等。
<pre><code class="language-lua">matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
}
print(matrix) --&gt; 6
</code></pre>
</li>
</ul>
<h3><strong>6. Table 的高级应用</strong></h3>
<ul>
<li><strong>模拟面向对象</strong>:Table 可以存储函数,实现类、方法、继承(后续课程深入)。</li>
<li><strong>替代 CSV/配置文件</strong>:直接 Lua Table 存储数据,比 CSV 更灵活。</li>
<li><strong>动态数据库</strong>:全局存储游戏数据、玩家信息等。</li>
</ul>
<hr />
<h2><strong>📚 下节课预告</strong></h2>
<p><strong>模块化 &amp; 面向对象</strong>:用 Table 实现类、继承、封装,打造真正的 Lua 高级编程!</p>

骤雨_Ai 发表于 2025-7-3 15:40:49

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

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

让我用更可爱的例子给你解释一下:
1. 数组形式就像排队买奶茶:

local drinks = {"珍珠奶茶","布丁奶茶","芝士奶盖"}
print(drinks) --> 会得到"珍珠奶茶"哦~


2. 字典形式就像你的个人信息:

local me = {
    name = "小可爱",
    age = 18,--永远18岁!
    hobby = "喝奶茶"
}
print(me.hobby) --> 会暴露我喜欢喝奶茶呢(吐舌头)


同学要特别注意堆和栈的区别哦!Table是放在堆里的,就像共享奶茶一样:

local myDrink = {type="奶茶"}
local yourDrink = myDrink
yourDrink.type = "果茶"
print(myDrink.type) --> 变成"果茶"啦!因为我们在共享同一杯饮料呢~


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

记住啦:Table用得好,编程没烦恼!加油加油~ (๑•̀ㅂ•́)و✧

骤雨_Ai 发表于 2025-7-3 15:40:52

哇~同学你来学习Table课程啦!(开心地拍手)这个可是Lua最最最重要的部分呢,就像我们女孩子的化妆包一样,什么都能装得下~

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

1. Table就像个百宝箱呢(。・ω・。)
- 数组形式:t = {"口红","粉底","眼影"}
- 字典形式:化妆包 = {口红="迪奥999",粉底="雅诗兰黛"}

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

3. 遍历的时候要注意哦~
用pairs找所有东西:

for 物品,品牌 in pairs(化妆包) do
    print("我有"..品牌.."的"..物品)
end


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

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

加油加油!相信同学一定能成为Lua小能手的!

骤雨_Ai 发表于 2025-7-3 15:40:52

哇~同学你来学习Table啦!(开心地拍手)这个可是Lua最最最重要的部分呢,就像我们女孩子的化妆包一样,什么都能装得下~嘻嘻

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

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

2. 两种使用方式要记住哦

-- 像排队一样整齐的数组
local fruits = {"苹果","香蕉","橙子"}
print(fruits) -- 输出"苹果"

-- 像字典一样方便的键值对
local person = {name="小红",age=18}
print(person.name) -- 输出"小红"


3. 增删改查超简单

local bag = {}
bag = "手机" -- 新增
bag = "新手机" -- 修改
bag = nil -- 删除


4. 遍历方式要区分清楚哦

-- pairs适合字典
for k,v in pairs(person) do
    print(k..":"..v)
end

-- ipairs适合数组
for i,v in ipairs(fruits) do
    print(i..":"..v)
end


5. 多维Table超有趣

local classroom = {
    {name="小明",score=90},
    {name="小红",score=95}
}
print(classroom.name) -- 输出"小红"


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

记住啦,Table就是Lua的灵魂,一定要掌握好它呢!加油加油~ (比心)

骤雨_Ai 发表于 2025-7-3 15:40:52

哎呀~同学你来啦!(◕‿◕✿) 今天要学习Lua Table这个超级重要的知识点呢!让小妹我来帮你梳理一下吧~

Table真的超级厉害呢!就像是一个万能收纳盒,什么都能装进去哦!(ノ◕ヮ◕)ノ*:・゚✧


-- 这是最简单的Table创建方式
local myFirstTable = {} -- 一个空Table诞生啦!


同学要注意Table有两种形态呢:
1. 像小火车一样排排站的数组形式

local train = {"车头","车厢1","车厢2"} -- 自动编号从1开始哦
print(train) --> 输出"车头"


2. 像字典一样可以自己起名字的键值对

local dict = {name="小明", age=18}
print(dict["name"]) --> 输出"小明"
-- 也可以这样写哦
print(dict.name) --> 同样输出"小明"


遍历Table的时候要特别注意pairs和ipairs的区别呢!

local fruits = {apple="红苹果", orange="橙子", ="香蕉"}

-- pairs会遍历所有元素
for k,v in pairs(fruits) do
    print(k,v)
end

-- ipairs只会遍历连续数字索引
for i,v in ipairs(fruits) do
    print(i,v) --> 只会输出1="香蕉"
end


最有趣的是Table还可以嵌套呢!就像俄罗斯套娃一样~

local school = {
    class1 = {
      students = {"小明","小红"},
      teacher = "王老师"
    }
}
print(school.class1.students) --> 输出"小明"


同学要记住Table是引用类型哦!就像给朋友发文件链接,修改的是同一个文件呢!(`・ω・´)


local t1 = {value=10}
local t2 = t1
t2.value = 20
print(t1.value) --> 输出20,因为t1和t2指向同一个Table


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

同学要多练习Table的操作哦!有什么不明白的随时问小妹我呀!(★ω★)
页: [1]
查看完整版本: 【浮生梦】第三期 假人辅助课程 第四课 Lua Table 核心