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 基础
Lua 5.3 的中文手册, http://cloudwu.github.io/lua53doc 在线浏览 --第一部分 -- 两个横线开始单行的注释 --[[ 加上两个[和]表示 多行的注释. -- ...
- python基础——迭代器
python基础——迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器 ...
- Lua基础
局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处 ...
- Lua基础 函数(一)
转自: http://blog.csdn.net/wzzfeitian/article/details/8653101 在Lua中,函数是对语句和表达式进行抽象的主要方法.既可以用来处理一些特殊的工作 ...
- Lua基础(转)
局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处 ...
- python基础—迭代器、生成器
python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返 ...
- Lua基础之MetaTable(6)
Lua基础之MetaTable(6) 转载地址:http://nova-fusion.com/2011/06/30/lua-metatables-tutorial/ 关于MetaTable的补充:ht ...
- java基础-迭代器(Iterator)与增强for循环
java基础-迭代器(Iterator)与增强for循环 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Iterator迭代器概述 Java中提供了很多个集合,它们在存储元素时 ...
- lua 10 迭代器
转自:http://www.runoob.com/lua/lua-iterators.html 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表 ...
随机推荐
- xtrabackup备份脚本
背景:现网环境全备份脚本:基于xtrabackup命令 #!/bin/sh # MySQL端口 PORT=' # 备份用户 USER='bkpuser' PAWD='bkpuser' Time=`da ...
- thrift使用上面的一些坑
https://blog.csdn.net/andylau00j/article/details/53912485
- 20145302张薇《Java程序设计》第六周学习总结
20145302 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 串流设计的概念 无论来源和目的地实体形式是什么,只要取得InputStream和OutputStream实例 ...
- 20135320赵瀚青LINUX第六周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 这周主要讲解的是进程. ...
- MR案例:倒排索引 && MultipleInputs
本案例采用 MultipleInputs类 实现多路径输入的倒排索引.解读:MR多路径输入 package test0820; import java.io.IOException; import j ...
- kafka log文件和offset原理
log与offset 日志存储路径根据配置log.dirs ,日志文件通过 topic-partitionId分目录,再通过log.roll.hours 和log.segment.bytes来分文件, ...
- Docker-Compose 一键部署Ningx+.Net Core+Redis集群
在看该文章前,你需要对Docker有所了解. 1.创建WebApp应用程序 我使用的是.Net Core 1.0.1版本,创建一个MVC应用程序,并添加对Redis的引用.因为这些很基础,也很简单,这 ...
- web视频资料百度云分享
韩顺平 struts视频教程(31讲)密码:hsp789 链接:https://pan.baidu.com/s/1kSP4CFt1gpVikRaqQXkFGA 密码:kzvp 韩顺平 spring ...
- PAT1072. Gas Station (30)
题目的测试用例数据有问题! 第一个Case 应该是 G1 2.0 3.2 一直在想3.3分母的3怎么来了.ORZ #include <iostream> #include <ccty ...
- [转]常见HTTP状态(如200,304,404,503)
在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于 ...