Range of hex values?

Hello,

In 1.8.[67] the following range does not produce what I expected:

("\x00"…"\x7F").to_a

It only produces the characters between \x00 and \x39, while in
1.9.[12] it produces the full expected range.
I’m curious if this would be considered a bug, intentional, or I’m
missing something?

A workaround that does the right thing in all versions:

(0…127).to_a.map {|c| c.chr}

Regards,
Ammar

you are relying on String#succ! there. read the docs to understand
why it is not what you want.

On Sat, Oct 30, 2010 at 4:33 PM, ara.t.howard
[email protected]wrote:

you are relying on String#succ! there. read the docs to understand
why it is not what you want.

Thanks for the tip. I read the docs and it did shed some light on what
is
going on behind the scenes, but I still don’t get why it works in 1.9. I
will have to investigate further.

Thanks again,
Ammar

On 30.10.2010 11:33, Ammar A. wrote:

(0…127).to_a.map {|c| c.chr}

The “.to_a” is superfluous here. Here are other options

127.times.map &:chr
(0…127).map &:chr

Kind regards

robert

On Sun, Oct 31, 2010 at 2:45 PM, Robert K.
[email protected] wrote:

(0…127).map &:chr

Thanks Robert. Another great example of the “TIMTOWTDI-ness” of ruby
and how one’s view gets shaped by where they started from.

I have a slight preference for the one that includes the range. It
tells me just a little bit more about what the intention is. Obviously
that’s just a matter of taste, or lack thereof.

I still haven’t figured out why it works under 1.9. I guess
String#succ has changed.

Cheers,
Ammar