最近学习Lua,收获颇多,现分享用闭包实现的table迭代器,闭包相关知识请参阅闭包_维基百科
以下是迭代器的代码,不足之处还请指教:
Iterator = {}
function Iterator.iter(arg)
if type(arg) =="table" then
local i = 0
local n = table.getn(arg)
return function()
i = i+1
if i<n then return arg[i] end
end
else return arg end
end
return Iterator
//以下是测试代码
--Test.lua
require("Iterator") --import Iterator class
t = {"fgasf","sdfgfsg","12","sdgg","4646"}
iter = Iterator.iter(t)
while true do
local element = iter()
if not element then break end
print(element)
end
//以下是输出
>lua -e "io.stdout:setvbuf 'no'" "Test.lua"
fgasf
sdfgfsg
12
sdgg
>Exit code: 0