Fun with ranges!

S

Sam Gentle

So I was messing around today trying to find out whether there was a
viable way to cram unbounded lists into the Range implementation when
I stumbled on this...

irb(main):001:0> inf =3D 1.0/0.0
=3D> Infinity

irb(main):002:0> 1..inf
=3D> 1..Infinity

Hoorah! But not just that.

irb(main):003:0> 'a'..inf
=3D> "a"..Infinity

Hold on a second, I said to myself, that doesn't make any sense... inf
is a Float and "a" is a string! That's when I discovered ruby's
dastardly secret:

irb(main):004:0> 'a' <=3D> 3
=3D> false
irb(main):005:0> 3 <=3D> 'a'
=3D> nil

And hence:

irb(main):006:0> 'a'..3
=3D> "a"..3
irb(main):007:0> 3..'a'
ArgumentError: bad value for range
from (irb):7

Zounds,

Sam
 
D

David A. Black

Hi --

So I was messing around today trying to find out whether there was a
viable way to cram unbounded lists into the Range implementation when
I stumbled on this...

irb(main):001:0> inf = 1.0/0.0
=> Infinity

irb(main):002:0> 1..inf
=> 1..Infinity

Hoorah! But not just that.

irb(main):003:0> 'a'..inf
=> "a"..Infinity

Hold on a second, I said to myself, that doesn't make any sense... inf
is a Float and "a" is a string! That's when I discovered ruby's
dastardly secret:

irb(main):004:0> 'a' <=> 3
=> false
irb(main):005:0> 3 <=> 'a'
=> nil

And hence:

irb(main):006:0> 'a'..3
=> "a"..3
irb(main):007:0> 3..'a'
ArgumentError: bad value for range
from (irb):7

What version of Ruby are you using?

$ ruby -ve '"a"..3'
ruby 1.8.3 (2005-09-21) [powerpc-darwin8.3.0]
-e:1: warning: useless use of .. in void context
-e:1: bad value for range (ArgumentError)


David
 
S

Sam Gentle

What version of Ruby are you using?

$ ruby -ve '"a"..3'
ruby 1.8.3 (2005-09-21) [powerpc-darwin8.3.0]
-e:1: warning: useless use of .. in void context
-e:1: bad value for range (ArgumentError)

C:\>ruby -ve '"a"..3'
ruby 1.8.2 (2005-02-01) [i386-mswin32]
-e:1: warning: useless use of .. in void context

Strange...

weill samg$ ruby -ve '"a"..3'
ruby 1.8.0 (2003-08-04) [i686-linux]
-e:1: warning: useless use of .. in void context
-e:1: bad value for range (ArgumentError)

Double-strange... I wonder if it's a windows thing or a version thing
(and if so why it only pops up somewhere between 1.8.0 and 1.8.3).

Sam
 
D

David A. Black

Hi --

What version of Ruby are you using?

$ ruby -ve '"a"..3'
ruby 1.8.3 (2005-09-21) [powerpc-darwin8.3.0]
-e:1: warning: useless use of .. in void context
-e:1: bad value for range (ArgumentError)

C:\>ruby -ve '"a"..3'
ruby 1.8.2 (2005-02-01) [i386-mswin32]
-e:1: warning: useless use of .. in void context

Strange...

weill samg$ ruby -ve '"a"..3'
ruby 1.8.0 (2003-08-04) [i686-linux]
-e:1: warning: useless use of .. in void context
-e:1: bad value for range (ArgumentError)

Double-strange... I wonder if it's a windows thing or a version thing
(and if so why it only pops up somewhere between 1.8.0 and 1.8.3).

Interesting -- it seems to be a 1.8.2 thing.


David
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

fun with "case" 15
Unicode escaping fun & games 0
dirty ranges 9
redirecting stderr in irb 2
different output for same expression? 3
Class instance method 2
Time + time.local 1
Set class and repetetive elements 6

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,074
Latest member
StanleyFra

Latest Threads

Top