迭代器实现
lua的迭代器使用了闭合函数来实现,如果对闭合函数不熟悉,可以看我的上一篇Lua的深入函数,讲解了闭合函数
https://blog.csdn.net/liaoshengg/article/details/81327114
使用闭合函数来遍历集合中的元素
返回值
function iteratorLua(t)
local i = 0
return function ()
i = i + 1
return t[i]
end
end
t = {"Monday","Tuesday","Wednesday","Thursday"}
使用方式一
local iter = iteratorLua(t)
while(true) do
local value = iter()
if value ~= nil then
print(value)
else
break
end
end
使用方式二
for value in iteratorLua(t) do
print(value)
end
lua的闭合函数可以把下标和下标的值一起返回出来
function iteratorLua(t)
local i = 0
return function()
i = i + 1
if i > #t then
return nil
else
return i,t[i]
end
end
end
t = {"Monday","Tuesday","Wednesday","Thursday"}
for key , value in iteratorLua(t) do
print(key .."---".. value)
end
总结
lua的迭代器也就是使用闭合函数实现,通过一个循环判断,key或键值是否为nil,为nil就跳出,否则就返回值
这里主要了解内部实现即可,一般还是使用lua自带的迭代器