Feature #15093
openRetrive Array elements with infinite ranges specified by Float::INFINITY
Description
Currently in Ruby head (2.6) the following gives an error:
2.6-head :001 > a = [1,2,3,4]
# => [1, 2, 3, 4]
2.6-head :002 > a[0..Float::INFINITY]
#Traceback (most recent call last):
# 2: from /home/sameer/.rvm/rubies/ruby-2.6-head/bin/irb:11:in `<main>'
# 1: from (irb):2
#RangeError (float Inf out of range of integer)
I think Array
should support infinite ranges created by Float::INFINITY
as well
since 0..nil
and 0..Float::INFINITY
are both supposed to create 'infinite' ranges
and having different behavior for each of them is inconsistent.
Updated by shevegen (Robert A. Heiler) over 6 years ago
I can not say much about the reasoning (I am neutral there) but
I agree in one regards - if we use a large number, we get all
Array members:
a = [1,2,3,4] # => [1, 2, 3, 4]
a[0..111111111] # => [1, 2, 3, 4]
So from this point of view, in this context, infinity could also
mean a very large number, in which case the operation should
or could be treated like any other high number.
But I think matz has to have a look at this since it correlates
with the topic of infinity (and to some extent "ranges"; not so
much in this example alone necessarily, but I think infinity has
to do with ranges as well).
Updated by marcandre (Marc-Andre Lafortune) over 6 years ago
This could be fixed, at least in theory, but in practice this is no longer an issue: use endless range
a[0...] # => [1, 2, 3, 4]
I'm unsure if we should change the behavior, since it allows catching of subtle errors where the result of a calculation returns Float::INFINITY
.