加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Lua 中 pairs 与 ipairs 区别

发布时间:2020-12-14 21:53:14 所属栏目:大数据 来源:网络整理
导读:--lua ipairs 与 pairs 比较--[[ pairs: 迭代 table,可以遍历表中所有的 key 可以返回 nil ipairs: 迭代数组,不能返回 nil,如果遇到 nil 则退出--]]local fruit = {[1] = "apple",[2] = "banana",[4] = "orange",[8] = "grape"}for k,v in pairs(fruit) do
--lua ipairs 与 pairs 比较


--[[
 pairs: 迭代 table,可以遍历表中所有的 key 可以返回 nil

 ipairs: 迭代数组,不能返回 nil,如果遇到 nil 则退出
--]]
local fruit = {
[1] = "apple",[2] = "banana",[4] = "orange",[8] = "grape"
}

for k,v in pairs(fruit) do
	print("k = " .. k .. "    v = " .. v)
end
print("n")
--[[
运行结果:
k = 1    v = apple
k = 2    v = banana
k = 4    v = orange
k = 8    v = grape
--]]


for k,v in ipairs(fruit) do
	print("k = " .. k .. "    v = " .. v)
end
print("n")
--[[
运行结果:(k=2时断开)
k = 1    v = apple
k = 2    v = banana
--]]



--[[
同:都是能遍历集合(表、数组)

异:ipairs 仅仅遍历值,按照索引升序遍历,索引中断停止遍历。即不能返回 nil,只能返回数字 0,如果遇到 nil 则退出。
	它只能遍历到集合中出现的第一个不是整数的 key。

pairs 能遍历集合的所有元素。即 pairs 可以遍历集合中所有的 key,并且除了迭代器本身以及遍历表本身还可以返回 nil。

--]]
local numbers = {"one","two",[3] = "three",["four"] = "four"}
for k,v in ipairs(numbers) do
	print("k = " .. k .. "    v = " .. v)
end
print("n")
--[[
运行结果:
k = 1    v = one
k = 2    v = two
k = 3    v = three
--]]


for k,v in pairs(numbers) do
	print("k = " .. k .. "    v = " .. v)
end
print("n")
--[[
运行结果:
k = 1    v = one
k = 2    v = two
k = 3    v = three
k = four    v = four
--]]



local country = {}
country.China = "Chinese"
country.India = "Indian"
country.Spain = "Spanish"

for k,v in pairs(country) do
	print("k = " .. k .. "    v = " .. v)
end
print("n")
--[[
运行结果:
k = Spain    v = Spanish
k = China    v = Chinese
k = India    v = Indian
--]]


for k,v in ipairs(country) do
	print("k = " .. k .. "    v = " .. v)
end
print("n")
--[[
运行结果:空
--]]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读