Диапазоны в Ruby
Ruby имеет два оператора для генерации диапазона значений. .. - включающий и ... - исключающий.
..
examples/ruby/range_two.rb
for i in 0..3 puts i end
Сгенерирует
0 1 2 3
включая начало и конец, так же как это работает в Perl.
...
Если мы будем использовать 3 точки вместо двух, тогда диапазон будет включать нижнюю границу, и не будет включать верхнюю. Так же, как диапазоны range работают в Python.
examples/ruby/range_three.rb
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:
examples/ruby/range_chars.rb
for i in 'Z'..'a' puts i end
Z [ \ ] ^ _ ` a
Диапазоны с переменными
В качестве нижней и верхней границ мы можем использовать переменные:
examples/ruby/range_var.rb
x = 3 y = 6 for i in x .. y puts i end

Published on 2016-02-27