Анонимные функции
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 44 из 65.
До сих пор вы создавали функции с такими именами, как calculateTotal или printMessage. Но иногда вам нужна простая функция для одной конкретной задачи, и давать ей имя кажется излишним. Вот здесь и пригодятся анонимные функции.
Анонимная функция — это функция без имени. Вы определяете её прямо там, где она вам нужна, что делает ваш код более лаконичным для коротких разовых операций. Синтаксис прост — вы просто пишете список параметров, за которым следует тело функции:
(parameter) {
// тело функции
}Анонимные функции особенно полезны при работе с методами списков. Например, вместо создания отдельной именованной функции для вывода каждого элемента списка, вы можете использовать анонимную функцию непосредственно с методом forEach:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});Этот подход позволяет сохранять ваш код чистым и лаконичным, особенно когда логика функции проста и не будет использоваться повторно в других частях вашей программы.
Задание
ЛегкоСоздайте программу, которая обрабатывает список имен сотрудников с использованием анонимных функций. Ваша программа продемонстрирует, как использовать анонимные функции с методом forEach для выполнения различных операций над каждым элементом списка.
- Прочитайте строковый ввод, содержащий имена сотрудников, разделенные запятыми (например,
"Alice,Bob,Charlie,Diana") - Разделите входную строку на список отдельных имен, используя метод
split() - Используйте метод
forEachс анонимной функцией, чтобы вывести имя каждого сотрудника с приветственным сообщением - Используйте метод
forEachс другой анонимной функцией, чтобы вывести имя каждого сотрудника в верхнем регистре - Используйте метод
forEachс третьей анонимной функцией, чтобы вывести имя каждого сотрудника вместе с количеством символов в нем
Например, если на вход подается "Alice,Bob,Charlie", ваша программа должна вывести:
Processing employee list: Alice,Bob,Charlie
===========================================
Welcome Messages:
Welcome to the team, Alice!
Welcome to the team, Bob!
Welcome to the team, Charlie!
===========================================
Names in Uppercase:
ALICE
BOB
CHARLIE
===========================================
Name Lengths:
Alice has 5 characters
Bob has 3 characters
Charlie has 7 charactersЕсли на вход подается "John,Sarah", ваша программа должна вывести:
Processing employee list: John,Sarah
===========================================
Welcome Messages:
Welcome to the team, John!
Welcome to the team, Sarah!
===========================================
Names in Uppercase:
JOHN
SARAH
===========================================
Name Lengths:
John has 4 characters
Sarah has 5 charactersВаша программа должна использовать три отдельных вызова метода forEach, каждый со своей анонимной функцией. Анонимные функции должны быть определены встроенно (inline) без присвоения им имен. Каждая анонимная функция должна принимать один параметр, представляющий текущее имя сотрудника, и выполнять указанную операцию. Используйте интерполяцию строк для форматирования выходных сообщений точно так, как показано выше.
Шпаргалка
Анонимная функция — это функция без имени, определенная прямо там, где она вам нужна. Синтаксис использует список параметров, за которым следует тело функции:
(parameter) {
// тело функции
}Анонимные функции особенно полезны с методами списков, такими как forEach:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});Такой подход позволяет сохранять код чистым и сфокусированным для простых разовых операций, которые не будут использоваться повторно в других местах.
Попробуйте сами
import 'dart:io';
void main() {
// Чтение входной строки, содержащей имена сотрудников
String? input = stdin.readLineSync();
// Разделение входных данных на список имен
List<String> employeeNames = input!.split(',');
// Вывод начального сообщения о начале обработки
print('Processing employee list: $input');
print('===========================================');
// TODO: Напишите свой код ниже
// Используйте forEach с анонимными функциями, чтобы:
// 1. Вывести приветственные сообщения
// 2. Вывести имена в верхнем регистре
// 3. Вывести длину имен
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей