English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основы Ruby

Давайте начнем с Ruby

Область (Range) Ruby

Диапазон (Range) везде: от a до z, от 0 до 9 и т.д. 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
 
$, =", "   # Array value separator
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
# -*- coding: UTF-8 -*-
 
# определение диапазона
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

диапазон можно использовать в операторе case:

Онлайн пример

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
score = 70
 
result = case score
when 0..40
    "糟糕的分数"
when 41..60
    "快要及格"
when 61..70
    "Пройденная оценка"
when 71..100
       "Хорошая оценка"
else
    "Неправильная оценка"
end
 
puts result

Результат выполнения примера выше:

Пройденная оценка

Область как интервал

Последнее использование области - это проверка интервала: проверить, находится ли заданное значение в заданном интервале. Для выполнения расчета необходимо использовать оператор === равенства.

Онлайн пример

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
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')