回顾:列表处理器
本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 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');
}逻辑与流程控制中的所有课
自己练习: Dart 在线编译器