zoukankan      html  css  js  c++  java
  • 泛型与闭包实现迭代器

    泛型for----->第一遍
    10
    20
    30
    40
    50
    泛型for----->第二遍
    [root@localhost for]# cat for1.lua 
    function iter( t )
            local i = 0
            return function()
                    i = i + 1
                    return t[i]
            end
    end
    
    my_iter = iter{ 10, 20, 30, 40, 50 }
    
    --[[
    -- 第一种遍历方式, 缺点,即每次循环时都需要创建一个新的closure变量,否则第一次迭代成功后,再将该closure用于新的for循环时将会直接退出。
    while true do
            local element = my_iter()
            if element == nil then break end
            print( element )
    end
    
    print "loop again"
    
    -- 第一遍 遍历之后, 下面的不会执行,因为状态没有重置
    while true do
            local element = my_iter()
            if element == nil then break end
            print( element )
    end
    ]]--
    
    
    -- 第二种遍历方式: 泛型for遍历, lua在其内部替我们保存了迭代函数 
    
    print "泛型for----->第一遍"
    for v in my_iter do
            print( v )
    end
    
    -- 跟while循环一样,存在上述所说的缺点
    print "泛型for----->第二遍"
    for v in my_iter do
            print( v )
    end
  • 相关阅读:
    实战演练:通过伪列、虚拟列实现SQL优化
    python try else
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    拦截器
    拦截器
    拦截器
    拦截器
  • 原文地址:https://www.cnblogs.com/ghostwu/p/9237947.html
Copyright © 2011-2022 走看看