Menu
Coddy logo textTech

Диапазоны в Switch

Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 10 из 56.

Вы использовали switch с диапазонами в основах. Этот же прием масштабируется для реальных задач классификации, где каждый вариант охватывает определенный диапазон значений.

let temp = 22
switch temp {
case ..<0:        print("freezing")
case 0..<10:      print("cold")
case 10..<20:     print("mild")
case 20..<30:     print("warm")
default:           print("hot")
}
// warm

Первый case ..<0 использует форму одностороннего диапазона: «любое значение строго меньше 0». Вы также можете использовать 0..., чтобы обозначить «0 или больше».

Варианты проверяются сверху вниз, и срабатывает первое совпадение, поэтому располагайте их от меньшего к большему (или используйте default для всех остальных случаев).

challenge icon

Задание

Новичок

Считайте одно целое число из входных данных: температуру в градусах Цельсия. Выведите одну из этих меток, используя один оператор switch с диапазонами (range cases):

  • Ниже 0 (отрицательные числа): freezing
  • 0...9: cold
  • 10...19: mild
  • 20...29: warm
  • 30...39: hot
  • 40 и выше: scorching

Для входного значения 22 результатом будет warm.

Шпаргалка

Используйте switch с диапазонами для классификации значений. Варианты (cases) проверяются сверху вниз; выбирается первое совпадение.

let temp = 22
switch temp {
case ..<0:        print("freezing")   // односторонний: всё, что меньше 0
case 0..<10:      print("cold")
case 10..<20:     print("mild")
case 20..<30:     print("warm")
default:          print("hot")        // охватывает всё остальное
}
// warm
  • ..<0 — односторонний диапазон: любое значение строго меньше 0
  • 40... — односторонний диапазон: 40 или больше
  • Располагайте варианты от меньшего к большему; используйте default для обработки всех оставшихся случаев

Попробуйте сами

let temp = Int(readLine()!)!

// TODO: выполните switch по temp, используя диапазоны, выведите соответствующую метку
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком