РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
3 of 1245 menu

Оператор match

Оператор match сравнивает значение с несколькими образцами и выполняет код того образца, которому соответствует значение. Оператор принимает значение, которое нужно сопоставить, и набор веток вида образец => выражение. Сопоставление всегда должно быть исчерпывающим: либо нужно перечислить все возможные варианты, либо добавить ветку с подчёркиванием _, которая сработает по умолчанию.

Если в ветке нужно выполнить несколько выражений, её тело заключается в фигурные скобки. Оператор match является выражением, поэтому его результат можно присвоить переменной или вернуть из функции.

Синтаксис

match value { pattern1 => expression1, pattern2 => expression2, _ => default_expression, }

Пример

Давайте сопоставим число 2 с несколькими образцами и выведем название числа:

fn main() { let num = 2; let res = match num { 1 => "one", 2 => "two", 3 => "three", _ => "other", }; println!("{}", res); }

Результат выполнения кода:

"two"

Пример

Давайте сопоставим число 10, для которого нет отдельного образца. Сработает ветка по умолчанию:

fn main() { let num = 10; let res = match num { 1 => "one", 2 => "two", 3 => "three", _ => "other", }; println!("{}", res); }

Результат выполнения кода:

"other"

Пример

Давайте используем несколько выражений в ветке match, заключив их в фигурные скобки:

fn main() { let num = 1; match num { 1 => { let msg = "one"; println!("{}", msg); }, _ => println!("other"), } }

Результат выполнения кода:

"one"

Пример

Давайте свяжем значение с переменной внутри образца, чтобы использовать его в теле ветки:

fn main() { let num = 5; let res = match num { 1 => "one".to_string(), n => format!("got {}", n), }; println!("{}", res); }

Результат выполнения кода:

"got 5"

Смотрите также

  • оператор if,
    который выполняет код при истинности условия
  • оператор else,
    который выполняет код, если условие ложно
  • конструкция if let,
    которая сопоставляет значение с одним образцом
  • конструкция while let,
    которая выполняет цикл, пока значение соответствует образцу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить