Ruby

Search for '{{search_term}}'

Диапазоны в Ruby

CMOS is the Code-Maven Open Source podcast that also includes video interviews. Subscribe to this feed RSS feed with your Podcast listener app or via iTunes iTunes.

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

Savenkova Natalya
Переводчик
Savenkova Natalya
Gabor Szabo
Автор
Gabor Szabo

Comments