开发者社区> morixinguan> 正文

Lua基础---迭代器

简介: 官方的文档说: 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址 在Lua中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。
+关注继续查看

官方的文档说:

迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址

在Lua中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。

迭代器的种类主要有:泛型for迭代器、无状态的迭代器、多状态的迭代器

下面看几个例子:

ipairs.lua

name = {"YYX","HJZ"};
--以下称为泛型for迭代器
--其中key表示索引值,从1开始计算
--value表示数组中的元素
--ipairs表示迭代函数
for key,value in ipairs(name) do
	print(key,value);
end

--实现一个自加算法无状态的迭代函数
function NumAdd(count,var)
	--定义一个局部变量_count并初始化为0
	local _count = 0 ;
	--参数count表示该函数需要迭代的次数
	--其实这里的思路有点像C的递归
	--实现递归需要有条件退出,有始有终
	if(var < count)
	then
      	   var = var + 1 ;
	   return var , var + _count ;
	end
end 

--输出迭代函数的值,i表示迭代次数,n表示迭代后的数值
for i , n in NumAdd,5,0
do 
    print(i,n);
end

array = {1,2,3,4,5,6,7,8,9,10};
function array_put(length , var)
	--获取Array的长度
	length = #array ;
	--如果传入需要遍历的值小于Array的长度,就遍历
	if(var < length)
	then 
	    var = var + 1 ;
	    return  var , array[var] ;
	end 
end

for i , n in array_put,10,0
do
	print(i,n);
end 
解释运行:

lua ipairs.lua

运行结果:

1       YYX
2       HJZ
1       1
2       2
3       3
4       4
5       5
1       1
2       2
3       3
4       4
5       5
6       6
7       7
8       8
9       9
10      10

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
lua语言——迭代器
lua语言——迭代器
58 0
【Lua基础 第5章 】unpack()和pack()、Lua 中的文件 I/O、简单模式下io的部分方法、完全模式下file的部分方法、日期和时间、闭包使用
unpack()和pack()、Lua 中的文件 I/O、简单模式下io的部分方法、完全模式下file的部分方法、日期和时间、闭包使用
163 0
【Lua基础 第4章】Lua的流程控制、#的作用、table的创建方式、table表常用方法、函数、多返回值、可变长参数
Lua的流程控制、#的作用、table的创建方式、table表常用方法、函数、多返回值、可变长参数
41 0
【Lua基础 第3章】变量、赋值语句、索引、lua中的循环、循环控制语句
lua 中的变量、赋值语句、索引、lua中的循环、循环控制语句
46 0
【Lua基础 第2章】lua遍历table的方式、运算符、math库、字符串操作方法
lua遍历table的方式、运算符、math库、字符串操作方法
196 0
【Lua基础 第1章】初识Lua脚本语言、数据类型、全局变量、关键字的使用
初识Lua脚本语言、数据类型、全局变量、关键字的使用
51 0
Lua 基础
Lua 基础语法及示例
497 0
Lua基础---一维数组与多维数组
Lua语言中,数组和C还是有区别的,Lua的数组下标从1开始计数,而C语言的数组下标从0开始计数,我想这可能是设计Lua的人想要符合人的思维习惯而去这么设计的。 数组,也就是按相同类型,在内存中顺序排列的一个组合,这点跟C基本没多大的差别。
1106 0
+关注
morixinguan
ITGEGE在线教育嵌入式开发讲师。 CSDN博客专家、CSDN-Linux特邀编辑、CSDN博乐、CSDN学院讲师,目前从事嵌入式开发领域,从事与单片机,Linux,android相关的产品开发。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载