Lua用闭包实现的table迭代器

来源:互联网 发布:探测鬼魂的软件 编辑:程序博客网 时间:2024/04/30 15:33

最近学习Lua,收获颇多,现分享用闭包实现的table迭代器,闭包相关知识请参阅闭包_维基百科

以下是迭代器的代码,不足之处还请指教:

Iterator = {}function Iterator.iter(arg)if type(arg) =="table" thenlocal i = 0local n = table.getn(arg)return function()i =i+1if i<n then return arg[i] endendelse  return arg endendreturn Iterator//以下是测试代码--Test.luarequire("Iterator") --import Iterator classt = {"fgasf","sdfgfsg","12","sdgg","4646"}iter = Iterator.iter(t)while true dolocal element = iter()if not element then break endprint(element)end//以下是输出>lua -e "io.stdout:setvbuf 'no'" "Test.lua" fgasfsdfgfsg12sdgg>Exit code: 0


原创粉丝点击