泛型for和迭代器
2017-12-01 00:00:00


我们知道for循环是一个能控制次数的循环,泛型for循环更是通过迭代器而实现遍历(迭代器所支持的遍历),在以前的语句一课中,我们认识了for循环的强大,我们先来回顾下for循环。

举例:

1、迭代器形式

 

2、要实现泛型迭代器for循环,具体代码如下

 

3、数值形式

首先我们来介绍函数next(list,key),这个函数有两个参数,一个是要遍历的表,一个是key。而在key被传nil时将会返回第一个,否则返回下一个。

举例:

无状态迭代器就是啥状态都不要,直接干活儿的迭代器。优点就是节约开支,我们在上面知道,for迭代的语义核心是_f(_s,_var),也就是迭代器函数的调用,一个无状态的迭代器只依靠这两个值就能完成所有工作。

最为典型的就是迭代器ipairs。

迭代器编写举例:

链表的迭代,是无状态迭代器中最为经典的。所谓链表就是无穷个表,每个表中都会有一个元素指向下一个元素的整体。这种结构数据在lua中并不具有优势,因为table已经满足需求了。

链表迭代器举例: