Range weirdness

This surprised me:

C:\Documents and Settings\Alex>ruby -e "(4..1).each{|a| puts a}"

C:\Documents and Settings\Alex>ruby -e "(1..4).each{|a| puts a}"
1
2
3
4

C:\Documents and Settings\Alex>

Should it have done? I find it somewhat odd that ranges can only be enumerated in one direction. Is there a reason for it?

···

--
Alex

Should it have done? I find it somewhat odd that ranges can only be
enumerated in one direction. Is there a reason for it?

There are many reason for it.

First, you need ranges with no elements.

Example:

(0 .. x.size-1).each{|i| puts x[i]}

Now it works correctly with x=. It wouldn't if (0..-1) was 0.

Another example:

x = ["a", "b", "c", "d"]
p x[1..-2]

["b", "c"]

It wouldn't work either if (1..-2) meant [1,0,-1,-2].

···

On 9/29/06, Alex Young <alex@blackkettle.org> wrote:

--
Tomasz Wegrzanowski [ http://t-a-w.blogspot.com/ ]