Feature #14084
Updated by tessi (Philipp Tessenow) almost 8 years ago
I'd like to propose a new method for Enumerator which returns whether there will be a next value in the enumerator when calling `Enumerator#next`.
It should work like this ruby demo:
~~~ ruby
class Enumerator
def next?
begin
peek
true
rescue StopIteration
return false
false end
true
end
end
a = [1,2,3]
e = a.to_enum
p e.next? #=> true
p e.next #=> 1
p e.next? #=> true
p e.next #=> 2
p e.next? #=> true
p e.next #=> 3
p e.next? #=> false
p e.next #raises StopIteration
~~~
I propose the method to be called `next?` as it returns either `true` or `false`.
I am aware that we can currently figure out if there is a next value by using `rescue` (as in the code snippet above), but it is ugly since it covers many lines and uses exceptions for control flow.
Introducing the `next?` method makes enumerators a little nicer to work with.
A patch with an example implementation for ruby trunk is attached (in git-diff format, any feedback welcome).
I agree that my patch will be licensed under the Ruby License.