浮生A梦 发表于 2025-5-7 15:10:31

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

<p><a href="https://acnr1yklaaqz.feishu.cn/minutes/obcnb67mn79rpq6h8b733l62?from=from_copylink">课程链接</a></p>
<p>这节课主要讲解了 Lua 编程语言中的数组和字典(表)的概念、操作方法以及迭代器的使用。以下是这节课的详细内容总结:</p>
<h3>1. 数组(一维数组和多维数组)</h3>
<ul>
<li><strong>数组的定义</strong>:
<ul>
<li>数组是相同数据类型元素的有序集合。</li>
<li>在 Lua 中,数组是通过 <code>table</code> 数据类型实现的。</li>
</ul>
</li>
<li><strong>一维数组</strong>:
<ul>
<li>创建方式:<code>table = {1, 2, 3, 4}</code>。</li>
<li>访问元素:通过下标访问,例如 <code>table</code> 访问第一个元素。</li>
<li>默认下标从 <code>1</code> 开始。</li>
</ul>
</li>
<li><strong>多维数组</strong>:
<ul>
<li>创建方式:<code>table = {{1, 2}, {3, 4}}</code>。</li>
<li>访问元素:通过多级下标访问,例如 <code>table</code> 访问第一个子数组的第二个元素。</li>
</ul>
</li>
<li><strong>数组的增删改查</strong>:
<ul>
<li><strong>增加</strong>:直接赋值到新的下标位置,例如 <code>table = 5</code>。</li>
<li><strong>删除</strong>:将元素设置为 <code>nil</code>,例如 <code>table = nil</code>。</li>
<li><strong>修改</strong>:直接对指定下标的值进行赋值,例如 <code>table = &quot;new_value&quot;</code>。</li>
<li><strong>查询</strong>:通过循环或迭代器遍历数组。</li>
</ul>
</li>
</ul>
<h3>2. 字典(表)</h3>
<ul>
<li><strong>字典的定义</strong>:
<ul>
<li>字典是一种键值对(key-value)的数据结构。</li>
<li>在 Lua 中,字典也是通过 <code>table</code> 数据类型实现的。</li>
</ul>
</li>
<li><strong>创建字典</strong>:
<ul>
<li>使用键值对初始化,例如 <code>table = {name = &quot;张三&quot;, age = 18}</code>。</li>
<li>访问元素:通过键访问,例如 <code>table[&quot;name&quot;]</code> 或 <code>table.name</code>。</li>
</ul>
</li>
<li><strong>字典的增删改查</strong>:
<ul>
<li><strong>增加</strong>:直接添加新的键值对,例如 <code>table.job = &quot;teacher&quot;</code>。</li>
<li><strong>删除</strong>:将键值对设置为 <code>nil</code>,例如 <code>table.age = nil</code>。</li>
<li><strong>修改</strong>:直接对键对应的值进行赋值,例如 <code>table.name = &quot;李四&quot;</code>。</li>
<li><strong>查询</strong>:通过键访问值。</li>
</ul>
</li>
</ul>
<h3>3. 混合型表</h3>
<ul>
<li><strong>混合型表</strong>:
<ul>
<li>数组和字典可以在同一个表中混合使用。</li>
<li>例如:<code>table = {1, 2, 3, name = &quot;张三&quot;}</code>。</li>
</ul>
</li>
<li><strong>遍历混合型表</strong>:
<ul>
<li>使用 <code>pairs</code> 函数可以遍历表中的所有键值对。</li>
<li>使用 <code>ipairs</code> 函数只能遍历数组部分(连续的数字键)。</li>
</ul>
</li>
</ul>
<h3>4. 迭代器</h3>
<ul>
<li><strong>迭代器的作用</strong>:
<ul>
<li>用于遍历表中的元素。</li>
<li>比普通循环更灵活,可以处理非连续键的情况。</li>
</ul>
</li>
<li><strong><code>pairs</code> 函数</strong>:
<ul>
<li>遍历表中的所有键值对。</li>
<li>示例:<code>for k, v in pairs(table) do print(k, v) end</code>。</li>
</ul>
</li>
<li><strong><code>ipairs</code> 函数</strong>:
<ul>
<li>只遍历表中的数组部分(连续的数字键)。</li>
<li>示例:<code>for i, v in ipairs(table) do print(i, v) end</code>。</li>
</ul>
</li>
</ul>
<h3>5. 其他要点</h3>
<ul>
<li><strong>内存地址</strong>:
<ul>
<li>不同的表即使内容相同,也会存放在不同的内存地址。</li>
</ul>
</li>
<li><strong>数组长度</strong>:
<ul>
<li>使用 <code>#table</code> 获取数组部分的长度。</li>
</ul>
</li>
<li><strong>表的初始化</strong>:
<ul>
<li>可以通过空表初始化,然后动态添加元素。</li>
</ul>
</li>
<li><strong>代码练习</strong>:
<ul>
<li>通过实际代码练习,加深对数组和字典操作的理解。</li>
</ul>
</li>
</ul>
<h3>6. 下一步学习计划</h3>
<ul>
<li>讲解堆栈的概念。</li>
<li>继续深入学习 Lua 的系统函数。</li>
<li>通过实战案例巩固基础语法。</li>
</ul>
<p>这节课的重点在于理解数组和字典(表)的基本操作,以及如何使用迭代器进行灵活的遍历。通过反复练习和理解,可以更好地掌握 Lua 编程的基础知识。</p>

飓风_Ai 发表于 2025-5-7 15:10:32

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

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

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

混合型表就像你的书包:

myBag = {
    "语文书",-- 数组部分
    "数学书",
    owner = "小明",-- 字典部分
    color = "蓝色"
}


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

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

(悄悄说:当你用pairs遍历表时,顺序是不固定的哦,这是Lua的小个性~)
页: [1]
查看完整版本: Lua 第三课 table和迭代器 2025-57