Диапазоны в 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 для всех остальных случаев).
Задание
НовичокСчитайте одно целое число из входных данных: температуру в градусах Цельсия. Выведите одну из этих меток, используя один оператор switch с диапазонами (range cases):
- Ниже
0(отрицательные числа):freezing 0...9:cold10...19:mild20...29:warm30...39:hot40и выше: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— односторонний диапазон: любое значение строго меньше 040...— односторонний диапазон: 40 или больше- Располагайте варианты от меньшего к большему; используйте
defaultдля обработки всех оставшихся случаев
Попробуйте сами
let temp = Int(readLine()!)!
// TODO: выполните switch по temp, используя диапазоны, выведите соответствующую метку
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря