Menu
Coddy logo textTech

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

Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 1 из 66.

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

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

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

Каждая строка внутри match называется «ветвью» (arm). Символ => отделяет шаблон от кода, который выполняется при совпадении этого шаблона. Нижнее подчеркивание _ — это специальный шаблон подстановки, который соответствует чему угодно; это своего рода «универсальный вариант» (catch-all) для любого значения, которое не подошло под другие шаблоны.

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

let number = 2;

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

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

challenge icon

Задание

Легко

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

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

Условия:

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

Параметры:

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

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

Шпаргалка

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

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

Каждая строка внутри match называется «веткой» (arm). Символ => отделяет шаблон от кода, который выполняется при совпадении этого шаблона.

Пример:

let number = 2;

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

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

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

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

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

Все уроки раздела Logic & Flow