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
相关文章推荐
- Lua学习——闭包、迭代器
- Lua初识之再论函数闭包-十一
- Lua学习——闭包、迭代器
- Lua语言学习(一)------Lua语言闭包代替范性for语义的迭代器的原理
- Lua编程笔录--Lua初识及语法四(数组,迭代器,table表)
- Lua笔记11-迭代器和闭包
- Lua 闭包
- Cocos2d-lua 初识shader之五:定时器
- 在C++使用LUA交互,LUA实现闭包,C++/LUA相互闭包
- Lua初识(1)
- Lua初识之函数-十
- lua闭包
- 闭包分析:lua function,oc 代码块可以产生闭包.c++lambda不能产生闭包
- Lua初识(5)_循环语句
- [译] Closures in Lua - Lua中的闭包
- 第10月第6天 lua 闭包
- Lua初识(7)_函数库
- lua语言-《lua程序设计》6~7章函数和迭代器与泛型for
- Lua闭包学习
- lua进阶4--lua闭包