Lua初学习 9-14_03 迭代器 ( ipairs 与 pairs)
前言 :所谓迭代器:就是一种可以遍历一种集合中所有元素的机制
Lua中,通常将迭代器表示为函数,每一次调用函数,即返回集合中下一个元素
1:ipairs 与 pairs 的区别
t1 = {"one","two","three","four"} --数组
==== ipairs遍历 =====
for k,v in ipairs(t1) do
print(k,v) -----> 1 one 2 two 3 three 4 four
end
==== pairs遍历 ====
for k,v in pairs(t1) do
print(k,v) -----> 1 one 2 two 3 three 4 four 同上
end
==============接下来用 key value初始化table==========
t2 = {a = "one" , b = "two" , c = "three" , d = "four"}
for k,v in ipairs(t2) do
print(k,v) ------>什么都没有
end
for k,v in pairs(t2) do
print(k,v) --------->a = one b = two c = three d = four
end
可以看出:ipairs无法用于 key value 组成的table ,可以用做数组
pairs可以用于table和数组
1:来个简单的迭代器
function diedai(t)
local i = 0
return function () i = i +1 ;return t[i] end
end
t = {1,2,3,4,5,6} --创建一个数组
iter = diedai(t) --创建一个迭代器
while true do
local e = iter() --调用迭代器
if(e==nil) then break end
print(e)
end