Kotaro Ezawa
Kotaro Ezawa

Reputation: 1519

Create a range of strings from end values

I use irb.

I write the code below.
"ax".."bc"
I expect
"ax""ay""az""ba"bb""bc"

But the result is just
"ax".."bc"

How should I correct? Thanks.

Upvotes: 5

Views: 138

Answers (3)

maerics
maerics

Reputation: 156434

The range 'ax' .. 'bc' does represent the values that you expect but it doesn't generate them until it really needs to (as a way to save time and space in case you don't end up using each value). You can access them all via an interator or conversion to an array:

r = 'ax' .. 'bc' # => "ax" .. "bc"
r.class # => Range
r.to_a # => ["ax", "ay", "az", "ba", "bb", "bc"]
r.to_a.class # => Array
r.each {|x| puts x}
ax
ay
az
ba
bb
bc

Upvotes: 3

Karoly Horvath
Karoly Horvath

Reputation: 96266

Range is a builtin in construct, internally storing start and ending point (and whether it's an end-inclusive range) for efficiency. So IRB will just show you the literal for it.

What do you want to do?

Upvotes: 2

Mark Byers
Mark Byers

Reputation: 838296

> puts ("ax".."bc").to_a
ax
ay
az
ba
bb
bc

Upvotes: 9

Related Questions