Menu
CoddyTech

Выражение 'match'

Часть раздела Логика и управление потоком путешествия по Rust на Coddy. Урок 1 из 66.

Выражение match — это мощный инструмент Rust для сопоставления с образцом, который позволяет сравнивать значение с различными шаблонами и выполнять код в зависимости от того, какой шаблон подходит. Представьте его как более продвинутый вариант инструкций if, который позволяет элегантно обрабатывать несколько условий.

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

match value {
    pattern1 => code_to_run,
    pattern2 => code_to_run,
    _ => default_code,
}

Каждая строка внутри match называется «ветвью». => отделяет шаблон от кода, который выполняется, когда этот шаблон совпадает. Подчёркивание _ — это специальный шаблон-подстановочный знак, который совпадает с чем угодно: он служит «универсальным вариантом» для любого значения, не совпавшего с другими шаблонами.

Вот простой пример, который проверяет число:

let number = 2;

match number {
    1 => println!("One"),
    2 => println!("Two"),
    _ => println!("Other"),
}

В Rust выражения match должны быть исчерпывающими, то есть обрабатывать все возможные значения. Поэтому подстановочный шаблон _ так важен: он гарантирует, что ты учёл все случаи, которые не были сопоставлены явно.

match — это выражение, поэтому оно также может возвращать значение. Если оно стоит последним выражением в функции, функция возвращает значение соответствующей ветви:

fn day_name(day: i32) -> String {
    match day {
        1 => String::from("Monday"),
        2 => String::from("Tuesday"),
        _ => String::from("Another day"),
    }
}

Поскольку эта функция возвращает String, каждая ветвь преобразует свой текст (&str) в String с помощью String::from или .to_string().

challenge icon

Задание

Легко

Напишите функцию describe_number, которая принимает num и возвращает строковое описание в зависимости от значения числа.

Используйте выражение match, чтобы возвращать разные описания для разных чисел.

Условия:

  • Если num равно 0, верните "zero"
  • Если num равно 1, верните "one"
  • Если num равно 2, верните "two"
  • Если num равно 3, верните "three"
  • Для любого другого числа верните "many"

Параметры:

  • num (i32): Число для описания

Возвращает: Строковое описание числа (String)

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

fn describe_number(num: i32) -> String {
    // Напишите код здесь
}
quiz iconПроверьте себя

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

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

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