Lua语法详解之表(迭代器遍历,pairs,ipairs)

迭代器就是用来遍历表的,因为#判断表的长度不准确,一般不建议用#来判断长度,遍历表
(一)ipairs

--ipairs,还是从下标为1开始遍历的,小于,等于0的下标的值无法参与遍历,也就是从4,5,0遍历
--ipairs只能找到连续索引的键,如果中间断序了,它也无法遍历后面的,如d
a={[0]=1,4,5,[-1]=8,0}
for k,v in ipairs(a) do--k是键,v是值
	print("key value"..k.."_"..v)
end--key value1_4,key value2_5,key value3_0

c={[0]=1,4,5,[-1]=8,0,[4]=4}--注意这里是遍历的是4,5,0,【4】=4,因为索引是4,所以没有断序,能打印
for k,v in ipairs(c) do--k是键,v是值
	print("key value"..k.."_"..v)
end
--[[上面打印的结果
key value1_4
key value2_5
key value3_0
key value4_4]]

d={[0]=1,4,5,[-1]=8,0,[5]=4}--注意这里是遍历的是4,5,0,因为索引是5,断序了,不能打印
for k,v in ipairs(d) do--k是键,v是值
	print("key value"..k.."_"..v)
end
--[[上面打印的结果
key value1_4
key value2_5
key value3_0]]

(二)pairs(建议使用这个遍历表)
pairs能遍历表里所有非空值,一般建议用pairs遍历

--pairs
--pairs能遍历表里所有非空值,一般建议用pairs遍历
print("****ipairs*****")
a={[0]=1,4,5,[-1]=8,0}
for k,v in pairs(a) do
	print("key value"..k.."_"..v)
end
--[[
key value1_4
key value2_5
key value3_0
key value0_1
key value-1_8]]
c={[0]=1,4,5,[-1]=8,0,[4]=4}
for k,v in pairs(c) do
	print("key value"..k.."_"..v)
end
--[[
key value1_4
key value2_5
key value3_0
key value0_1
key value4_4
key value-1_8]]
d={[0]=1,4,5,[-1]=8,0,[5]=4}
for k,v in pairs(d) do
	print("key value"..k.."_"..v)
end
--[[
key value1_4
key value2_5
key value3_0
key value0_1
key value5_4
key value-1_8]]
print("表里带空的例子*****")
--表中的空的元素不参与遍历
e={[0]=1,nil,4,nil,5,[-1]=8,0,[5]=4,nil}
for k,v in pairs(e) do
	print("key value"..k.."_"..v)
end
--[[
key value2_4
key value4_5
key value5_0
key value0_1
key value-1_8
]]
print("****用pairs只遍历键")
--还可以用pairs只遍历键
for k in pairs(e) do
	print("key value"..k)
end
--[[
key value2
key value4
key value5
key value0
key value-1
]]
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值