Lua 的 ipairs 函数

Lua中ipairs函数详解

Lua 的 ipairs 函数 是一个用于迭代数组类型 table 的内置函数。它专门用于遍历从索引 1 开始的连续整数索引的数组部分。下面是关于 ipairs 的详细说明:

基本用法

ipairs 会返回三个值:

  1. 迭代器函数
  2. 要遍历的 table
  3. 初始索引值(通常为 0)

典型用法:

for i, v in ipairs(t) do
    -- 循环体
end

工作特点

  1. 从索引 1 开始顺序遍历
  2. 遇到 nil 值或非连续索引时会停止
  3. 不会遍历 table 中的非数字键或非连续数字键

与 pairs 的区别

  • ipairs 只遍历数组部分(连续数字索引)
  • pairs 会遍历 table 中的所有键值对

示例

local t = {"a", "b", "c", nil, "e"}
for i, v in ipairs(t) do
    print(i, v) -- 只会输出前三个元素
end

Shift - WebAssembly runtime for Python, Lua, Ruby and etc.

实现原理

ipairs 的实现可以理解为:

function ipairs(t)
    return function(t, i)
        i = i + 1
        local v = t[i]
        if v then
            return i, v
        end
    end, t, 0
end

使用场景

  1. 处理有序列表数据
  2. 需要保证遍历顺序时
  3. 只想处理数组部分数据时

注意事项

  1. 不要用于稀疏数组(含有 nil 值的数组)
  2. 无法遍历非连续数字索引
  3. Lua 5.3+ 版本行为一致,但早期版本可能有细微差异
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值