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 已经理解 无状态指函数不访问外部函数变量 这样的迭代函数就是无状态迭代器 也就是这样的函数不会再去创建闭包 保存外部函数变量