Определение простого замыкания
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 60 из 66.
Теперь, когда вы понимаете, что такое замыкания, давайте научимся определять и использовать их в вашем коде. Самый простой способ создать замыкание — присвоить его переменной, что позволит вам вызвать его позже.
Вот как вы определяете простое замыкание, которое не принимает параметров:
let my_closure = || {
println!("Hello from the closure!");
};Обратите внимание на пустые вертикальные черты || — это указывает на то, что замыкание не принимает аргументов. Фигурные скобки содержат код, который выполняется при вызове замыкания.
Чтобы вызвать замыкание, используйте его так же, как функцию, добавив круглые скобки после имени переменной:
let my_closure = || {
println!("Hello from the closure!");
};
my_closure(); // Это вызывает замыкание и выводит сообщениеЗадание
ЛегкоВы получите одну строку ввода, содержащую сообщение. Создайте замыкание (closure), которое не принимает параметров и выводит это сообщение. Сохраните замыкание в переменной, а затем вызовите его для отображения сообщения.
Требования:
- Прочитайте входное сообщение и удалите лишние пробелы (trim)
- Создайте замыкание, используя синтаксис
||, которое выводит сообщение - Сохраните замыкание в переменной
- Вызовите замыкание для его выполнения
Ввод:
- Одна строка, содержащая сообщение (например,
Welcome to Rust!)
Вывод:
- Сообщение, выведенное замыканием
Шпаргалка
Замыкание определяется с помощью вертикальных черт || и может быть сохранено в переменной:
let my_closure = || {
println!("Hello from the closure!");
};Чтобы вызвать замыкание, используйте круглые скобки после имени переменной:
my_closure(); // Выполняет замыканиеПопробуйте сами
use std::io;
fn main() {
// Чтение ввода
let mut message = String::new();
io::stdin().read_line(&mut message).expect("Failed to read line");
let message = message.trim();
// TODO: Создайте замыкание, которое выводит сообщение, и сохраните его в переменной
// TODO: Вызовите замыкание, чтобы вывести сообщение
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела 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Итоги: поиск элемента