Lua 的 ipairs 函数 是一个用于迭代数组类型 table 的内置函数。它专门用于遍历从索引 1 开始的连续整数索引的数组部分。下面是关于 ipairs 的详细说明:
基本用法
ipairs 会返回三个值:
- 迭代器函数
- 要遍历的 table
- 初始索引值(通常为 0)
典型用法:
1for i, v in ipairs(t) do 2 -- 循环体 3end 4
工作特点
- 从索引 1 开始顺序遍历
- 遇到
nil值或非连续索引时会停止 - 不会遍历
table中的非数字键或非连续数字键
与 pairs 的区别
示例
1local t = {"a", "b", "c", nil, "e"} 2for i, v in ipairs(t) do 3 print(i, v) -- 只会输出前三个元素 4end 5
Shift - WebAssembly runtime for Python, Lua, Ruby and etc.
实现原理
ipairs 的实现可以理解为:
1function ipairs(t) 2 return function(t, i) 3 i = i + 1 4 local v = t[i] 5 if v then 6 return i, v 7 end 8 end, t, 0 9end 10
使用场景
- 处理有序列表数据
- 需要保证遍历顺序时
- 只想处理数组部分数据时
注意事项
- 不要用于稀疏数组(含有 nil 值的数组)
- 无法遍历非连续数字索引
- Lua 5.3+ 版本行为一致,但早期版本可能有细微差异
《Lua 的 ipairs 函数》 是转载文章,点击查看原文。