在没有可遍历的内容时,Lua迭代器工厂应该返回什么?

我正在实现一个 Lua 迭代器,想知道在没有要迭代的内容时,迭代器工厂(创建用于迭代迭代器的闭包的函数,参见 http://www.lua.org/pil/7.1.html 中的 list_iter)应该返回什么。

例如,假设我要实现一个列表类型,我的列表对象根本没有任何条目。因此,我会认为 for i in myiterator do ... end 的体 ... 没有被访问过,脚本的执行会像什么也没发生一样继续。

目前我返回 nil,Lua(jit) 报错:尝试调用空值。如果我不返回任何返回值,也会发生相同的情况。

点赞
用户1009479
用户1009479

你可以像这样返回一个返回 nil 的闭包:

function nil_iter()
  return function() return nil end
end
2013-09-02 14:07:49