您的位置:首页 > 编程语言 > Lua

Lua初识之迭代器与闭包

2015-01-25 22:34 405 查看
一、-- 迭代器与闭包</span>
--迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素
--在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集
--合的下一个元素

-- 写一个方法实现迭代
function list_iter(t)
local i = 0   --定义局部变量 i
local n = table.getn(t)  -- 定义局部变量 n 获取 table 中元素个

数
return function() -- 闭包,调用list_iter方法时返回该匿名函数
i = i + 1  -- 每次调用匿名函数 i 自加 1
if i <= n then --如果i 小于等于 table表 t 的项数 返回第i项
return t[i] --返回 table表 t 中的第i项
end
end
end

--定义table
t = {1, 2, 3, 4, 5, 6}

iter = list_iter(t) -- iter 获取list_iter中的匿名函数

while true do
local element = iter() --调用匿名函数,返回table中个的下一项
-- 如果 获取的项 element 为空,说明已经遍历到了 table表 t的结尾

了,退出
if element == nil then
break
end
--打印遍历出来的 t 的项
print(element)

将 table表t中的所有项遍历出来
-- 运行打印结果如下

二、
function all()
-- 获取一条输入的字符串
local line = io.read()
--定义标记位置pos开始为 1
local pos = 1
-- 返回匿名函数
return function()
while line do
line = io.read()
pos = 1
end
end
--如果输入为空则返回nil结束
return nil
end
end

-- 使用 for 调用迭代
for word in all() do
print(word)
end




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: