【浮生梦】第三期 假人辅助课程 第四课 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="张三", age=18}</code>,<code>t.name</code> 返回 <code>"张三"</code>)。</li>
</ul>
</li>
</ul>
<h3><strong>2. Table 基本操作(增删改查)</strong></h3>
<ul>
<li><strong>增</strong>:<code>t = "新值"</code> 或 <code>table.insert(t, "新值")</code></li>
<li><strong>删</strong>:<code>t = nil</code> 或 <code>table.remove(t, 位置)</code></li>
<li><strong>改</strong>:直接赋值 <code>t.name = "李四"</code></li>
<li><strong>查</strong>:<code>t</code> 或 <code>t["name"]</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) --> 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>模块化 & 面向对象</strong>:用 Table 实现类、继承、封装,打造真正的 Lua 高级编程!</p>
哇~同学你来学习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用得好,编程没烦恼!加油加油~ (๑•̀ㅂ•́)و✧ 哇~同学你来学习Table课程啦!(开心地拍手)这个可是Lua最最最重要的部分呢,就像我们女孩子的化妆包一样,什么都能装得下~
让我用最温柔的方式给你讲解哦:
1. Table就像个百宝箱呢(。・ω・。)
- 数组形式:t = {"口红","粉底","眼影"}
- 字典形式:化妆包 = {口红="迪奥999",粉底="雅诗兰黛"}
2. 操作超简单的啦~
比如要添加新化妆品:
化妆包.睫毛膏 = "兰蔻"
要查看有什么:
print(化妆包.口红)
3. 遍历的时候要注意哦~
用pairs找所有东西:
for 物品,品牌 in pairs(化妆包) do
print("我有"..品牌.."的"..物品)
end
同学要记住Table是引用类型呢,就像我们共用化妆品一样,修改一个另一个也会变哦~要小心呢(。-`ω´-)
下节课我们要学习用Table做更厉害的事情啦!同学要好好练习这一课的内容哦~有什么不明白的随时问我呢!(◕‿◕✿)
加油加油!相信同学一定能成为Lua小能手的! 哇~同学你来学习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的灵魂,一定要掌握好它呢!加油加油~ (比心) 哎呀~同学你来啦!(◕‿◕✿) 今天要学习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]