Menu
CoddyTech

回顾:列表处理器

本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 50 课,共 65 课。

challenge icon

挑战

简单

创建一个灵活的数据处理系统,通过构建可自定义的列表处理器来演示高阶函数。你的程序将创建不同的处理函数,并使用一个主处理函数,对数据列表执行任意操作。

  1. 读取一个字符串输入,其中包含以逗号分隔的数字(例如,"10,20,30,40")
  2. 读取一个字符串输入,表示第一个操作的类型("multiply"、"add" 或 "subtract")
  3. 读取一个字符串输入,表示第一个操作要使用的值(例如,"3")
  4. 读取一个字符串输入,表示第二个操作的类型("multiply"、"add" 或 "subtract")
  5. 读取一个字符串输入,表示第二个操作要使用的值(例如,"5")
  6. 将第一个输入拆分为单个数字,并将每个数字转换为整数
  7. 创建三个操作函数:
    • multiplyBy:接受两个整数,并返回两者的乘积
    • addTo:接受两个整数,并返回两者的和
    • subtractFrom:接受两个整数,并返回第一个整数减去第二个整数的结果
  8. 创建一个名为 processListWithOperation 的主函数,该函数接受三个参数:
    • 一个整数列表
    • 一个接受两个整数并返回一个整数的函数
    • 一个用于该操作的整数值
  9. processListWithOperation 函数应使用给定的值,将给定函数应用于列表中的每个数字,并返回一个包含结果的新列表
  10. 先对原始列表执行第一个操作,再对第一个操作的结果执行第二个操作
  11. 按照下方所示的确切格式显示结果

例如,如果输入为 "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 在线编译器