--迭代器与closure
function values(t)
local i = 0
return function()
i=i+1
return t[i]
end
end
--values被称为工厂,通过它返回的闭合函数,而闭合函数中非局部的i在一次赋值后又不会消失,所以就实现了迭代器
t={1,2,3,4,5,6}
for v in values(t) do
print(v)
end
--读单词 用到两个库函数string.find() string.sub() 以及io.read()可以读取一行的内容
--注意:string.find()有两个返回值,可以利用多重赋值解决,进而得到一个单词的开始位置s和结束位置e
--'%w+'是描述一个单词的模式
function allwords()
local line = io.read()
local pos = 1
return function()
while line do
local s,e = string.find(line,'%w+',pos)
if s then
pos = e+1
return string.sub(line,s,e)
else
line = io.read()
pos = 1
end
end
return nil
end
end
for v in allwords() do
print(v)
end
--泛型for的语义
--控制变量
for v in all