zoukankan      html  css  js  c++  java
  • Lua 迭代器

    泛型 for 迭代器

    array = {"Lua", "Tutorial"}
    
    for key,value in ipairs(array) 
    do
       print(key, value)
    end

    输出

    Lua
    Tutorial

    无状态的迭代器

    function square(iteratorMaxCount,currentNumber)
       if currentNumber<iteratorMaxCount
       then
          currentNumber = currentNumber+1
       return currentNumber, currentNumber*currentNumber
       end
    end
    
    for i,n in square,3,0
    do
       print(i,n)
    end

    输出

    1    1
    2    4
    3    9

    多状态的迭代器

    array = {"Lua", "Tutorial"}
    
    function elementIterator (collection)
       local index = 0
       local count = #collection
       -- 闭包函数
       return function ()
          index = index + 1
          if index <= count
          then
             --  返回迭代器的当前元素
             return collection[index]
          end
       end
    end
    
    for element in elementIterator(array)
    do
       print(element)
    end

    输出

    Lua
    Tutorial

  • 相关阅读:
    推导式
    解构
    for 循环
    运算符
    while 循环
    流程控制语句
    索引和切片
    ASC转换BCD,ASC2BCD(转)
    CString和char互转,十六进制的BYTE转CString
    C++添加简单的日记记录
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10000187.html
Copyright © 2011-2022 走看看