无状态迭代器

 

function iter (a, i) i = i + 1 local v = a[i] if v then return i, v --迭代函数返回2个值 索引与值 end end function ipairs (a) --ipairs lua简单实现 return iter, a, 0 --返回3个值 迭代函数,状态常量a,控制变量初始值0 end a = {"one", "two", "three"} --无状态的迭代器是指不保留任何状态的迭代器, --因此在循环中我们可以利用无状态迭代器避免创建闭包花费额外的代价。 for i, v in ipairs(a) do --无状态迭代? 完成迭代功能的是for语句 print(i, v) end  

已经理解

 

无状态指函数不访问外部函数变量

这样的迭代函数就是无状态迭代器

也就是这样的函数不会再去创建闭包 保存外部函数变量

 

你可能感兴趣的:(无状态迭代器)