И мелкие неприятности могут отравить жизнь, если нет крупных (Р. Гомес де ла Серна).

Ruby – Диапазоны

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
13 августа 2018
Ruby - Диапазоны
Диапазоны встречаются везде: с января по декабрь, с 0 по 9, строки с 50 по 67 и т. д. Ruby поддерживает диапазоны и позволяет нам использовать диапазоны различными способами:

  • Диапазоны как последовательности
  • Диапазоны как условия
  • Диапазоны интервалов

Диапазоны как последовательности

Первое и, возможно, наиболее естественное использование диапазонов: это выражение последовательности. Последовательности имеют начальную точку, конечную точку и способ получения последовательных значений в последовательности.

Ruby создает эти последовательности, используя операторы диапазона «..» и «… …». Двухточечная форма создает инклюзивный диапазон, а трехточечная форма создает диапазон, исключающий указанное высокое значение.

(1..5)        #==> 1, 2, 3, 4, 5
(1...5)       #==> 1, 2, 3, 4
('a'..'d')    #==> 'a', 'b', 'c', 'd'

 

Последовательность 1..100 хранится как объект Range, содержащий ссылки на два объекта Fixnum. Если вам нужно, вы можете преобразовать диапазон в список, используя метод to_a. Попробуйте следующий пример:

#!/usr/bin/ruby

$, =", "   # Разделитель значений массива
range1 = (1..10).to_a
range2 = ('bar'..'bat').to_a

puts "#{range1}"
puts "#{range2}"

 

Это приведет к следующему результату:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
["bar", "bas", "bat"]

 

Диапазоны реализуют методы, которые позволяют вам перебирать их и тестировать их содержимое различными способами:

#!/usr/bin/ruby

# Assume a range
digits = 0..9

puts digits.include?(5)
ret = digits.min
puts "Минимальное значение #{ret}"

ret = digits.max
puts "Максимальное значение #{ret}"

ret = digits.reject {|i| i < 5 }
puts "Отклоненные значения #{ret}"

digits.each do |digit|
   puts "В цикле #{digit}"
end

 

Это приведет к следующему результату:

true
Минимальное значение 0
Максимальное значение 9
Отклоненные значения 5, 6, 7, 8, 9
В цикле 0
В цикле 1
В цикле 2
В цикле 3
В цикле 4
В цикле 5
В цикле 6
В цикле 7
В цикле 8
В цикле 9

 

Диапазоны как условия

Диапазоны также могут использоваться как условные выражения. Например, следующий фрагмент кода печатает наборы строк из стандартного ввода, где первая строка в каждом наборе содержит слово start и последнюю строку слово end:

while gets
   print if /start/../end/
end

 

Диапазоны могут использоваться в случаях,

#!/usr/bin/ruby

score = 70

result = case score
   when 0..40 then "Неудача"
   when 41..60 then "Пропустить"
   when 61..70 then "Пропустить с заслугой"
   when 71..100 then "Сдать с отличием"
   else "Неверный Балл"
end

puts result

 

Это приведет к следующему результату:

Пропустить с заслугой

 

Диапазоны интервалов

Окончательное использование универсального диапазона является интервальным тестом: если какое-то значение попадает в интервал, представленный диапазоном. Это делается с использованием ===, оператора равенства случая.

#!/usr/bin/ruby

if ((1..10) === 5)
   puts "5 лежит в (1..10)"
end

if (('a'..'j') === 'c')
   puts "c лежит в ('a'..'j')"
end

if (('a'..'j') === 'z')
   puts "z лежит в ('a'..'j')"
end

 

Это приведет к следующему результату:

5 лежит в (1..10)
c лежит в ('a'..'j')

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 28

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

    Добавить комментарий

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам:

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close