• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > 浅析Lua中的迭代器

浅析Lua中的迭代器

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了lua迭代器,lua 迭代,lua文件编辑器,lua脚本编辑器,lua语言编辑器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 迭代器是一种结构,使能够遍历所谓的集合或容器中的元素。在Lua中,这些集合通常是指那些用于创建各种数据结构,如数组表。
一般对于迭代器

一个通用的迭代器提供的键值对集合中的每个元素。下面一个简单的实例。

for key,value in ipairs(array)
do
   print(key, value)
end</div>

当我们运行上面的代码之后将得到下面的输出

2  Tutorial</div>

上面的示例使用由Lua中提供的默认ipairs迭代函数。

在Lua中,我们使用函数来表示迭代器。基于这些迭代器的功能状态保持,有两种主要类型:

  1.     无状态的迭代器
  2.     迭代器状态

无状态的迭代器

由名字本身就可以明白,这类型的迭代器功能不保留任何状态。

现在让我们来看看使用打印n个数的平方简单的函数,来创建我们自己的迭代器的例子。

   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</div>

当我们运行上面的程序,会得到下面的输出。

2 4
3 9</div>

上面的代码可以稍微进行修改,以模仿迭代器的工作方式ipairs函数。它如下所示。

   if currentNumber<iteratorMaxCount
   then
      currentNumber = currentNumber+1
   return currentNumber, currentNumber*currentNumber
   end
end

function squares(iteratorMaxCount)
   return square,iteratorMaxCount,0
end 

for i,n in squares(3)
do
 print(i,n)
end</div>

当我们运行上面的程序,会得到下面的输出。

2 4
3 9</div>

迭代器状态

迭代使用功能不保留状态,前面的例子。每次调用该函数时,它返回一个基于发送给函数的第二变量的集合的下一个元素。来保存当前元素的状态,封闭物使用。关闭保留不同职能调用变量的值。要创建一个新的闭包,我们创建了两个函数,包括封闭自己,一个工厂,创建封闭的功能。

现在让我们看看创造我们自己的迭代中,我们将使用闭包的一个例子。

function elementIterator (collection)
   local index = 0
   local count = #collection
   -- The closure function is returned
   return function ()
      index = index + 1
      if index <= count
      then
         -- return the current element of the iterator
         return collection[index]
      end
   end
end

for element in elementIterator(array)
do
   print(element)
end</div>

当我们运行上面的程序,会得到下面的输出。

Tutorial</div>

在上面的例子中,我们可以看到,元素迭代具有另一种方法里,使用的本地外部变量索引和计数由每个函数被调用时递增索引,返回每个集合中的元素。

我们可以创建使用闭包的函数的迭代器,如上图所示,它可以返回多个元素,每一个我们通过收集循环时间。

</div>

您可能想查找下面的文章:

  • 浅析Lua中的迭代器
  • Lua教程(五):迭代器和泛型for

相关文章

  • Lua模块和模块载入浅析
  • Lua中类的实现
  • 实现Lua中数据类型的源码分享
  • Lua实现正序和倒序的文件读取方法
  • Lua中简单的错误处理实例
  • Lua中类的实现原理探讨(Lua中实现类的方法)
  • Lua中的table浅析
  • lua脚本实现自动生成APK包
  • Lua中的基本数据类型详细介绍
  • Lua中的协同程序详解

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua实现split函数
    • Lua中变相实现continue跳出循环
    • Lua中rawset和rawget的作用浅析
    • Lua中的基本数据类型详细介绍
    • Lua变量类型简明总结
    • Lua中编译执行代码相关的函数详解
    • 详解Lua中的if语句的使用方法
    • Lua中的常用函数库汇总
    • Lua中实现sleep函数功能的4种方法
    • Lua中ipair和pair的区别

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有