【发布时间】:2012-11-04 17:39:52
【问题描述】:
有没有一种优雅的方式来实现枚举数的末尾?
例如,
a = (1..10).to_a
e = a.each
e.next # should yield 1
while e.next
# do something
end
当然,e 加注StopIteration 当你到达枚举数的末尾时。
有没有一种很好的方法可以在没有救援的情况下打破这个 while 循环? 我知道我可以只说 e.each (或者根本不使用枚举器),但是对于我的具体问题,我想在前几次迭代中做一些特别的事情,然后在最后几个迭代中做一些一般性的事情。
我想要一种查看下一个值并获取 nil 而不是错误的方法。
有什么建议吗?我可能缺少一些明显的东西......
注意。我不必使用枚举器,但这似乎是解决我的问题的最简单方法。因此,如果您有一个非枚举器解决方案(用于迭代可枚举),请随时分享。 (关于这一点,也许我应该只使用 each 或 each_with_index 并在特殊情况下使用计数器......)
【问题讨论】:
-
请编辑您的问题并解释您的实际问题是什么。您也许可以使用
each_cons(2),但细节太少,无法确定。
标签: ruby loops enumerators