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") --[[ 运行结果:空 --]] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |