Menu
Coddy logo textTech

Сопоставление нескольких значений

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

Иногда вам нужно сопоставить несколько различных значений, которые должны вызывать один и тот же код. Вместо того чтобы писать отдельные ветки для каждого значения, Rust позволяет объединять несколько шаблонов в одной ветке с помощью оператора | (ИЛИ).

Вот как можно сопоставить несколько значений в одной ветке:

let month = 12;

match month {
    12 | 1 | 2 => println!("Winter"),
    3 | 4 | 5 => println!("Spring"),
    6 | 7 | 8 => println!("Summer"),
    9 | 10 | 11 => println!("Fall"),
    _ => println!("Invalid month"),
}

Оператор | работает как «ИЛИ» в английском языке — если значение соответствует любому из шаблонов, разделённых |, эта ветка будет выполнена. Это делает ваш код гораздо чище, чем использование отдельных веток, которые делают одно и то же.

challenge icon

Задание

Легко

Вы получите номер дня (1-7) в качестве входных данных, представляющий день недели. Прочитайте входные данные, преобразуйте их в целое число и используйте выражение match с оператором |, чтобы вывести, является ли этот день будним или выходным.

Требования:

  • Если день — 1, 2, 3, 4 или 5, выведите "Weekday"
  • Если день — 6 или 7, выведите "Weekend"
  • Для любого другого числа выведите "Invalid day"

Входные данные: Одно целое число, представляющее номер дня

Выходные данные: Выведите либо "Weekday", "Weekend" или "Invalid day"

Шпаргалка

Вы можете объединить несколько шаблонов в одной ветке match, используя оператор | (ИЛИ). Если значение соответствует любому из шаблонов, разделенных |, эта ветка будет выполнена.

let month = 12;

match month {
    12 | 1 | 2 => println!("Winter"),
    3 | 4 | 5 => println!("Spring"),
    6 | 7 | 8 => println!("Summer"),
    9 | 10 | 11 => println!("Fall"),
    _ => println!("Invalid month"),
}

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

use std::io;

fn main() {
    // Считать ввод
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let day: i32 = input.trim().parse().expect("Please enter a number");
    
    // TODO: Напишите свой код ниже, используя выражение match с оператором |
    
}
quiz iconПроверьте себя

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

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