一:Lua中内置的迭代函数

——pairs
Lua(十一)——迭代器_热更新


——ipairs
Lua(十一)——迭代器_热更新_02


——pairs与ipairs的区别
1.pairs既能遍历数组形式的表也能遍历键值对形式的表,ipairs只能遍历数组形式的表
Lua(十一)——迭代器_Lua 热更新_03       Lua(十一)——迭代器_Lua 热更新_04

 

2.pairs会遍历所有不为nil的元素(如果遇到nil则跳过当前元素继续遍历下一个),ipairs从索引1开始遍历遇到nil则停止遍历
Lua(十一)——迭代器_Lua 热更新_05        Lua(十一)——迭代器_Lua 热更新_06    

遍历时先遍历整型数字的键,再遍历字符串的键(其实内部本身是根据Hash值来排序的,而Hash值本身就是随机排序的,有时候输出结果是乱序的,并不是先遍历整型数字的键,再遍历字符串的键)
Lua(十一)——迭代器_热更新_07


二:自定义迭代函数

Lua(十一)——迭代器_Lua 热更新_08

——迭代函数的执行步骤
1.调用迭代函数,把状态变量和控制变量作为参数传递给迭代器函数(状态变量只会在第一次调用时赋值,控制变量每次都会重新赋值)
2.如果迭代函数的返回值为nil,则跳出for循环。
   如果迭代器的返回值不为nil,则把迭代函数的返回值赋给变量列表,并执行循环体,继续调用迭代函数

——例子:自定义的迭代函数
Lua(十一)——迭代器_热更新_09