Menu
Coddy logo textTech

Оператор Match

Часть раздела Основы путешествия по Rust на Coddy. Урок 26 из 75.

Выражение match позволяет сравнить значение с последовательностью шаблонов и выполнить код в зависимости от того, какой шаблон совпадает.

Вот базовая структура выражения match:

match variable {
	pattern1 => expression1,
	pattern2 => expression2,
	// ... больше паттернов
	_ => default_expression,
}

За ключевым словом match следует значение, которое вы хотите проверить.

Каждая ветвь match состоит из шаблона, за которым следуют => и код для выполнения.

Символ подчёркивания _ — это случай по умолчанию, который соответствует всему, чему не соответствуют другие patterns.

Вот пример:

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 должны быть исчерпывающими, то есть охватывать все возможные значения. Компилятор проверит это за вас.

challenge icon

Задание

Новичок

Создай программу, которая принимает номер month (1 для января, 2 для февраля и т. д.) и выводит сезон, к которому он относится. Используй оператор match для реализации логики.

Сезоны и соответствующие им месяцы:

  • Winter: декабрь (12), январь (1), февраль (2)
  • Spring: март (3), апрель (4), май (5)
  • Summer: июнь (6), июль (7), август (8)
  • Autumn: сентябрь (9), октябрь (10), ноябрь (11)

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

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);
}
quiz iconПроверьте себя

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

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Rust