Project

General

Profile

Feature #15093

Retrive Array elements with infinite ranges specified by Float::INFINITY

Added by v0dro (Sameer Deshmukh) 15 days ago. Updated 14 days ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:88905]

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.

History

#1 [ruby-core:88918] Updated by shevegen (Robert A. Heiler) 15 days 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).

#2 [ruby-core:88923] Updated by marcandre (Marc-Andre Lafortune) 14 days 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.

Also available in: Atom PDF