Итоги — Обработчик списков
Часть раздела Логика и управление потоком путешествия по Dart на Coddy. Урок 50 из 65.
Задание
ЛегкоСоздайте гибкую систему обработки данных, демонстрирующую функции высшего порядка: разработайте настраиваемый обработчик списков. Ваша программа будет создавать различные функции обработки и использовать главную функцию-обработчик, которая может применять к списку данных любую операцию.
- Считайте строку с числами, разделёнными запятыми (например,
"10,20,30,40") - Считайте строку, задающую тип первой операции (
"multiply","add"или"subtract") - Считайте строку со значением, которое нужно использовать в первой операции (например,
"3") - Считайте строку, задающую тип второй операции (
"multiply","add"или"subtract") - Считайте строку со значением, которое нужно использовать во второй операции (например,
"5") - Разделите первый ввод на отдельные числа и преобразуйте каждое в целое число
- Создайте три функции операций:
multiplyBy— принимает два целых числа и возвращает произведение первого на второеaddTo— принимает два целых числа и возвращает сумму первого и второгоsubtractFrom— принимает два целых числа и возвращает разность первого и второго- Создайте главную функцию под названием
processListWithOperation, которая принимает три параметра: - Список целых чисел
- Функцию, которая принимает два целых числа и возвращает целое число
- Целое число, которое нужно использовать при выполнении операции
- Функция
processListWithOperationдолжна применять заданную функцию к каждому числу в списке, используя переданное значение, и возвращать новый список с результатами - Примените первую операцию к исходному списку, а затем примените вторую операцию к результату первой
- Выведите результаты в точном формате, показанном ниже
Например, если входные данные — "2,4,6", "multiply", "3", "add" и "10", ваша программа должна вывести:
Advanced List Processor
=======================
Original list: [2, 4, 6]
First operation: multiply by 3
After first operation: [6, 12, 18]
Second operation: add 10
Final result: [16, 22, 28]
Processing completed successfullyЕсли входные данные — "15,25,35", "subtract", "5", "multiply" и "2", ваша программа должна вывести:
Advanced List Processor
=======================
Original list: [15, 25, 35]
First operation: subtract 5
After first operation: [10, 20, 30]
Second operation: multiply by 2
Final result: [20, 40, 60]
Processing completed successfullyВаша программа должна демонстрировать функции высшего порядка, передавая соответствующую функцию операции в processListWithOperation в зависимости от типа операции во входных данных. Используйте условные операторы, чтобы определить, какую функцию передать для каждой операции. Функция processListWithOperation должна пройти по входному списку, применить заданную функцию с переданным значением к каждому элементу и собрать результаты в новый список. Применяйте операции последовательно, используя результат первой операции как входные данные для второй.
Попробуйте сами
import 'dart:io';
void main() {
// Считайте входные данные
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// Преобразуйте входную строку в список целых чисел
List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
int firstOpValue = int.parse(firstValue!);
int secondOpValue = int.parse(secondValue!);
// TODO: Напишите свой код ниже
// Создайте три функции для операций: multiplyBy, addTo, subtractFrom
// Создайте функцию processListWithOperation
// Последовательно выполните операции и сохраните результаты
// Выведите результаты в требуемом формате
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// Выведите первую операцию и её результат
// Выведите вторую операцию и итоговый результат
print('Processing completed successfully');
}Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря7Продвинутые функции
Анонимные функцииПередача функций в качестве аргументовПонимание замыканийВведение в рекурсиюРекурсивная функция: обратный отсчётРекурсивная функция: факториалИтоги — Обработчик списков2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостейПотренируйтесь самостоятельно: Онлайн-компилятор Dart