Ruby имеет два оператора для генерации диапазона значений. ..
- включающий и ...
- исключающий.
..
for i in 0..3
puts i
end
Сгенерирует
0
1
2
3
включая начало и конец, так же как это работает в Perl.
...
Если мы будем использовать 3 точки вместо двух, тогда диапазон будет включать нижнюю границу, и не будет включать верхнюю.
Так же, как диапазоны range
работают в Python.
for i in 0...3
puts i
end
0
1
2
Обратный диапазон
Если граница слева больше, чем граница справа, тогда оператор диапазона не вернет значений.
examples/ruby/range_two_wrong.rb
for i in 7 .. 4
puts i
end
Значения не возвращаются.
Как вариант, мы можем сгенерировать возрастающий список чисел, а затем вызвать для него метод reverse
.
Для этого нам нужно сначала сконвертировать диапазон в массив:
examples/ruby/range_two_reverse.rb
for i in (4..7).to_a.reverse
puts i
end
напечатает:
7
6
5
4
Буквенные диапазоны
В дополнение к созданию диапазонов чисел, Ruby может также создавать буквенные диапазоны:
examples/ruby/range_letters.rb
for i in 'a'..'d'
puts i
end
a
b
c
d
Диапазоны символов
Но и не только это. Мы можем использовать два любых символа из видимой части таблицы ASCI:
for i in 'Z'..'a'
puts i
end
Z
[
\
]
^
_
`
a
Диапазоны с переменными
В качестве нижней и верхней границ мы можем использовать переменные:
x = 3
y = 6
for i in x .. y
puts i
end