LUA pairs与ipairs

Lua编程语言中,pairs 和 ipairs 都用于遍历表(table)中的元素,但它们有一些不同之处。

在游戏开发中遇到了特效没完全消失的情况,因此记录一下

pairs:

pairs 函数用于迭代表中的所有键值对。它会返回一个迭代器函数,每次调用这个迭代器函数都会返回下一个键值对,直到所有键值对都被遍历完。对于

pairs 遍历表时不保证按照任何特定的顺序,因此你可能会得到不同的遍历顺序。

对于不要求结果顺序的比较合适,记着判空

ipairs:

ipairs 会从key=1,2,3...这样的顺序遍历,保证顺序,不保证完全遍历所有的键值对,遇到第一个nil 值停止。ipairs 遍历数组时会从索引1开始,按照顺序依次遍历整数索引。它保证按照顺序遍历数组部分,不会跳过任何索引。 比较安全?但是在实际用时可能不会完全遍历(比如不完全消除格子上的特效)

示例用法:

pairs:

当使用 pairs 遍历表时,如果遍历到一个键为 nil 的元素,迭代器会停止遍历,不会继续处理后续元素。

示例:

lua 复制代码
local myTable = {a = 1, b = 2, c = nil, d = 4}

```lua
for key, value in pairs(myTable) do
    print(key, value)
end

在上述示例中,遍历会在键为 "c" 时停止,不会继续到键 "d"。

ipairs:

当使用 ipairs 遍历数组部分时,如果遍历到一个值为 nil 的元素,迭代器会继续遍历后续元素,不会停止遍历。

示例:

lua 复制代码
local myArray = {10, 20, nil, 40}

for index, value in ipairs(myArray) do
    print(index, value)
end

在上述示例中,遍历会继续到索引 4,不会在索引 3 处停止。

所以,如果你想在遍历时处理 nil 值,可以使用 ipairs 遍历数组部分。如果你希望在遍历到 nil 值时停止遍历,可以使用 pairs 遍历整个表。

需要注意的是,pairs 和 ipairs 只适用于遍历表,而不适用于其他类型的数据结构。另外,ipairs 只会遍历连续的整数索引部分,如果表中有间隔或非整数索引,ipairs 将在遇到非连续索引时停止遍历。

相关推荐
八解毒剂14 分钟前
【计组】中央处理器CPU
java·开发语言·计算机组成原理
FakeOccupational1 小时前
【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波)
开发语言·笔记
打工仔折腾 AI1 小时前
工业场景下时序库与实时计算一体化架构选型实践对比
java·开发语言·后端·python·性能优化·架构·ai agent 实战
ZealSinger1 小时前
Java虚拟线程上线后瓶颈转移到哪看三层
java·开发语言·firefox
weixin_440730503 小时前
函数return、参数、参数组、递归函数、高阶函数等小结
开发语言·python
sugarzhangnotes3 小时前
【无标题】
开发语言·人工智能·python
geovindu3 小时前
rust: Composite Pattern
开发语言·后端·设计模式·rust·组合模式
周杰偷奶茶5 小时前
【Java】数组的定义和使用(附管理系统实战案例)
java·开发语言
橙子圆1235 小时前
JUC之集合类不安全
java·开发语言
阿里嘎多学长5 小时前
2026-09-29 GitHub 热点项目精选
开发语言·程序员·github·代码托管