Menu
Coddy logo textTech

Выражение 'if let'

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

Иногда вам нужно проверить только один конкретный шаблон, и вас не интересуют все остальные возможности. Написание полного выражения match всего с одной значимой ветвью и универсальным шаблоном _ может показаться излишне многословным. Rust предоставляет if let как более лаконичную альтернативу для таких ситуаций.

Выражение if let позволяет объединить сопоставление с образцом и условную логику в одном читаемом выражении. Вот базовый синтаксис:

if let pattern = value {
    // код, который выполнится, если шаблон совпал
}

Например, вместо того чтобы писать match с только одной полезной ветвью:

let number = 5;

match number {
    5 => println!("Found five!"),
    _ => (), // ничего не делать для других значений
}

Вы можете использовать if let, чтобы сделать код чище:

let number = 5;

if let 5 = number {
    println!("Found five!");
}

Выражение if let выполняет блок кода только в том случае, если шаблон совпадает. Если совпадения нет, ничего не происходит — нет необходимости в явном блоке «else», если только он вам не нужен.

challenge icon

Задание

Легко

Вы получите число на вход. Прочитайте входные данные, преобразуйте их в целое число и используйте выражение if let, чтобы проверить, равно ли число ровно 42. Если оно совпадает, выведите "The answer!". Если не совпадает, ничего не выводите.

Требования:

  • Используйте выражение if let, чтобы проверить, равно ли число 42
  • Если число равно 42, выведите "The answer!"
  • Если число любое другое, ничего не выводите

Входные данные: Одно целое число

Выходные данные: Выведите "The answer!", если число равно 42, в противном случае ничего не выводите

Шпаргалка

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

Базовый синтаксис:

if let pattern = value {
    // код, который выполнится, если шаблон совпадет
}

Пример сравнения match и if let:

// Использование match
let number = 5;
match number {
    5 => println!("Found five!"),
    _ => (), // ничего не делать для других значений
}

// Использование if let (более кратко)
let number = 5;
if let 5 = number {
    println!("Found five!");
}

Выражение if let выполняется только тогда, когда шаблон совпадает. Если он не совпадает, ничего не происходит, если только вы не добавите явный блок else.

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

use std::io;

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

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

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