Что такое 'Option'?
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 35 из 66.
В программировании вы часто сталкиваетесь с ситуациями, когда значение может присутствовать или отсутствовать. Например, поиск элемента в списке может привести к нахождению элемента, либо он может вовсе не существовать. Традиционные языки программирования часто используют специальные значения, такие как null или -1, для представления «ничего», но такой подход может привести к ошибкам и сбоям.
Rust использует другой подход с перечислением Option<T>. Это встроенный тип, который явно представляет возможность отсутствия значения. Вместо того чтобы гадать, существует ли значение, Rust заставляет вас обрабатывать оба случая заранее.
Перечисление Option имеет ровно два варианта:
Some(value) // Содержит значение
None // Не содержит значенияКогда функция может не возвращать значение, она возвращает Option. Если есть значение для возврата, она оборачивает его в Some. Если значения нет, она возвращает None.
Это делает потенциальное отсутствие явным в системе типов, предотвращая случайное использование значения, которого не существует.
Вы уже видели Option в действии с методом .get() хеш-таблицы — он возвращает Some(&value), когда ключ существует, или None, когда его нет. Этот паттерн встречается повсюду в Rust, делая ваш код более безопасным и предсказуемым.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Шпаргалка
Перечисление Option<T> представляет значение, которое может присутствовать или отсутствовать, предотвращая ошибки, связанные с использованием несуществующих значений.
Оно имеет два варианта:
Some(value) // Содержит значение
None // Не содержит значенияФункции, которые могут не возвращать значение, используют Option. Например, метод .get() хеш-таблицы возвращает Some(&value), если ключ существует, или None, если нет.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
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Итоги: поиск элемента