Strings and ranges

The following program doesn’t execute as I would expect:

#!/usr/bin/ruby

stringy = “X”

1.upto(10) do |i|
puts stringy
stringy.succ!
end

“X”.upto(“AG”) do |ss|
puts ss
end

puts "‘AB’ > ‘AA’ = #{‘AB’ > ‘AA’}"
puts “‘X’ < ‘AA’ = #{‘X’ < ‘AB’}”

The code below gets around my problem…

stringy = "X"
while true
puts stringy
stringy.succ!
break if stringy == "AH"
end

Is there a better way?

-Charlie

···

This communication is intended solely for the addressee and is
confidential. If you are not the intended recipient, any disclosure,
copying, distribution or any action taken or omitted to be taken in
reliance on it, is prohibited and may be unlawful. Unless indicated
to the contrary: it does not constitute professional advice or
opinions upon which reliance may be made by the addressee or any
other party, and it should be considered to be a work in progress.


Hi –

The following program doesn’t execute as I would expect:

#!/usr/bin/ruby

stringy = “X”

1.upto(10) do |i|
puts stringy
stringy.succ!
end

“X”.upto(“AG”) do |ss|
puts ss
end

puts “‘AB’ > ‘AA’ = #{‘AB’ > ‘AA’}”
puts “‘X’ < ‘AA’ = #{‘X’ < ‘AB’}”

Interesting – just like “9” and “10” (i.e., “9” > “9”.succ).

The code below gets around my problem…

stringy = “X”
while true
puts stringy
stringy.succ!
break if stringy == “AH”
end

Is there a better way?

How about this:

x = “X”
puts (0…10).map { x.succ! .dup }

(You need the .dup or you’ll end up with 10 of x, all the same
string.)

David

···

On Thu, 4 Dec 2003 charlie.mills@milliman.com wrote:


David A. Black
dblack@wobblini.net

charlie.mills@milliman.com schrieb im Newsbeitrag
news:OF2A486F40.B193A772-ON88256DF1.00657564@milliman.com

The following program doesn’t execute as I would expect:

#!/usr/bin/ruby

stringy = “X”

1.upto(10) do |i|
puts stringy
stringy.succ!
end

“X”.upto(“AG”) do |ss|
puts ss
end

puts “‘AB’ > ‘AA’ = #{‘AB’ > ‘AA’}”
puts “‘X’ < ‘AA’ = #{‘X’ < ‘AB’}”

The code below gets around my problem…

stringy = “X”
while true
puts stringy
stringy.succ!
break if stringy == “AH”
end

Is there a better way?

stringy = “X”
until stringy == “AH”
puts stringy
stringy.succ!
end

robert