开发者

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.


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


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


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?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜