Retrive Array elements with infinite ranges specified by Float::INFINITY
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)
Array should support infinite ranges created by
Float::INFINITY as well
0..Float::INFINITY are both supposed to create 'infinite' ranges
and having different behavior for each of them is inconsistent.
#1 [ruby-core:88918] Updated by shevegen (Robert A. Heiler) 2 months 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
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).
#2 [ruby-core:88923] Updated by marcandre (Marc-Andre Lafortune) 2 months 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