Оператор Match
Часть раздела Основы путешествия по Rust на Coddy. Урок 26 из 75.
Выражение match позволяет сравнить значение с рядом шаблонов и выполнить код в зависимости от того, какой шаблон совпадает.
Вот базовая структура выражения match:
match variable {
pattern1 => expression1,
pattern2 => expression2,
// ... дополнительные шаблоны
_ => default_expression,
}За ключевым словом match указывается значение, которое вы хотите проверить.
Каждая ветвь сопоставления состоит из шаблона, за которым следуют => и код для выполнения.
Подчёркивание _ — это вариант по умолчанию, который соответствует всему, чему не соответствуют другие шаблоны.
Вот пример:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
// ... другие шаблоны,
_ => "Invalid day",
};Для нескольких строк кода в ветви используйте блок:
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
// ... другие варианты
_ => "Invalid day",
};Можно сопоставить несколько шаблонов с помощью |:
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Выражения match в Rust должны быть исчерпывающими, то есть охватывать все возможные значения. Компилятор проверит это за вас.
Задание
НовичокСоздай программу, которая принимает номер месяца (1 для января, 2 для февраля и т. д.) и выводит сезон, к которому он относится. Используй инструкцию match для логики.
Сезоны и соответствующие им месяцы:
"Winter": декабрь (12), январь (1), февраль (2)"Spring": март (3), апрель (4), май (5)"Summer": июнь (6), июль (7), август (8)"Autumn": сентябрь (9), октябрь (10), ноябрь (11)
Присвой переменной season эти точные английские строки, чтобы программа выводила, например, status = Spring.
Попробуйте сами
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let month: i32 = input.trim().parse().unwrap();
// Напишите свой код ниже
let season =
// Не изменяйте строку ниже
println!("status = {}", season);
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический вводПотренируйтесь самостоятельно: Онлайн-компилятор Rust