良许Linux教程网 CentOS教程 Lua有状态迭代器

Lua有状态迭代器

很多情况下,迭代器需要保存多个状态信息而不是简单的状态常量和控制变量,最简单的方法是使用闭包,还有一种方法就是将所有的状态信息封装到 table 内,将 table 作为迭代器的状态常量,因为这种情况下可以将所有的信息存放在 table 内,所以迭代函数通常不需要第二个参数。

案例

有状态迭代器 有状态迭代器的使用

#!/usr/bin/lua
print("haicoder(www.haicoder.net)\n")
array = {"Hello""HaiCoder""Lua"}
function elementIterator (collection)
  local index = 0
  local count = #collection
  -- 闭包函数
  return function ()
     index = index + 1
     if index then
        --  返回迭代器的当前元素
        return collection[index]
     end
  end
end
for element in elementIterator(array)
do
  print(string.format("Element = %s", element))
end

程序运行,控制台输出,如下图:

Lua有状态迭代器Lua有状态迭代器

上面的例子中我们可以看到,在 elementIterator 函数内定义了另外一个匿名函数。此匿名函数中使用了一个外部变量 index (译注:此变量在匿名函数之外,elementIterator 函数内)。每次内部的匿名函数被调用时,都会将 index 的值增加 1,并统计数返回的每个元素。

我们可以参照上面的方法使用闭包创建一个迭代器函数。每次我们使用迭代器遍历集合时,它都可以返回多个元素。

Lua有状态迭代器总结

很多情况下,迭代器需要保存多个状态信息而不是简单的状态常量和控制变量,最简单的方法是使用闭包,还有一种方法就是将所有的状态信息封装到 table 内,将 table 作为迭代器的状态常量,因为这种情况下可以将所有的信息存放在 table 内,所以迭代函数通常不需要第二个参数。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部