Выражение 'if let'
Часть раздела Логика и управление потоком путешествия по 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 выполняет блок кода только тогда, когда pattern matches. Если совпадения нет, nothing не происходит — нет необходимости в явном случае "else", если только вы не хотите его добавить.
Задание
ЛегкоНа вход будет подано число. Прочитайте ввод, преобразуйте его в целое число и используйте выражение if let, чтобы проверить, равно ли число точно 42. Если оно совпадает, выведите "The answer!". Если оно не совпадает, ничего не выводите.
Требования:
- Используйте выражение
if let, чтобы проверить, равно ли число42 - Если число равно
42, выведите"The answer!" - Если число имеет любое другое значение, ничего не выводите
Ввод: Одно целое число
Вывод: Выведите "The answer!", если число равно 42, иначе ничего не выводите
Попробуйте сами
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, чтобы проверить, равен ли number 42
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком выполнения
Выражение 'match'Сопоставление нескольких значенийСопоставление диапазоновВыражение 'if let'Циклы как выраженияИтоги — Простой парсер команд4Группировка данных с помощью структур
Что такое структура?Обзор структурДоступ к полям структурыИзменяемые структурыСтруктуры как параметры функцийКортежные структурыИтоги: создание структуры Book7Обработка ошибок с помощью 'Result'
Что такое 'Result'?Использование 'match' с 'Result'is_ok() и is_err()Сокращения: unwrap и expectОператор вопросительного знака '?'Парсинг строк в числаИтоги: функция безопасного деления10Замыкания и анонимные функции
Что такое замыкание?Определение простого замыканияЗамыкания с параметрамиЗахват окруженияИтоги: Простое замыкание-сумматор2Введение в векторы
Что такое вектор?Создание вектораДобавление элементов с помощью pushДоступ к элементам вектораИтерация по векторуИзменяемая итерацияУдаление элементовИтоги — Простой счетчик очков5Пары «ключ-значение» в Hash Map
Что такое Hash Map?Создание Hash MapВставка пар «ключ-значение»Доступ к значениямИтерация по Hash MapОбновление значенияУдаление парыИтоги — Счетчик слов8Проект: Простой инвентарь товаров
Настройка проектаДобавление товараПроверка наличияПродажа товараСобираем всё воедино3Список дел в командной строке
Настройка проектаДобавление задачиПросмотр всех задачУдаление задачиИтоговый код6Обработка отсутствия значения с 'Option'
Что такое 'Option'?Использование 'match' с 'Option'is_some() и is_none()Распаковка 'Option'Метод expectЗначение по умолчанию: unwrap_orИтоги: поиск элементаПотренируйтесь самостоятельно: Онлайн-компилятор Rust