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

posted on 2016-09-14 13:42  tianjiuwan  阅读(375)  评论(0编辑  收藏  举报