Range in Ruby
Ruby has two operators to generate a range of values. .. is inclusive and ... is exclusive.
..
examples/ruby/range_two.rb
for i in 0..3 puts i end
Will generate
0 1 2 3
including the beginning and the end similar to how the range in Perl works.
...
If we use 3 dots instead of two, then the range will include the lower limit, but not the higher limit. Similar to how range in Python works.
examples/ruby/range_three.rb
for i in 0...3 puts i end
0 1 2
reverse range
If the limit on the left hand side is higher than on the right hand side, the range operator won't return any values.
examples/ruby/range_two_wrong.rb
for i in 7 .. 4 puts i end
It does not return any value.
As an alternative we can create a growing list of number and then call the reverse method on them. For this however first we need to convert the rnage to an array:
examples/ruby/range_two_reverse.rb
for i in (4..7).to_a.reverse puts i end
printing:
7 6 5 4
Range of letters
In additonal to ceating ranges of numbers, Ruby can also create a range of letters:
examples/ruby/range_letters.rb
for i in 'a'..'d' puts i end
a b c d
Range of characters
Not only that, but we can use any two characters in the visible part of the ASCII table:
examples/ruby/range_chars.rb
for i in 'Z'..'a' puts i end
Z [ \ ] ^ _ ` a
Range with variables
We can also use variables as the lower and upper limits:
examples/ruby/range_var.rb
x = 3 y = 6 for i in x .. y puts i end
Published on 2015-09-24