Menu
CoddyTech

匿名函数

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

到目前为止,你一直在创建名为 calculateTotal 或 printMessage 这样的函数。但有时,你只需要一个用于完成特定任务的简单函数,觉得给它起名没有必要。这时,匿名函数就派上用场了。

匿名函数是没有名称的函数。你可以在需要的地方直接定义它,让短小的一次性操作代码更简洁。语法很简单,只需写出参数列表,然后写函数体:

(parameter) {
  // 函数体
}

匿名函数与列表方法搭配使用特别方便。例如,你可以直接将匿名函数与 forEach 方法搭配使用,而不是创建一个单独的命名函数来打印列表中的每一项:

List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
  print(fruit);
});

这种方法能让你的代码保持简洁、重点突出,尤其是在函数逻辑简单,而且不会在程序的其他地方重复使用时。

challenge icon

挑战

简单

创建一个程序,使用匿名函数处理员工姓名列表。你的程序将演示如何使用 forEach 方法对列表中的每个元素执行不同的操作。

  1. 读取一个字符串输入,其中包含用逗号分隔的员工姓名(例如:"Alice,Bob,Charlie,Diana")
  2. 使用 split() 方法将输入字符串拆分为由单个姓名组成的列表
  3. 使用带有匿名函数的 forEach 方法,为每位员工打印一条欢迎消息
  4. 使用带有另一个匿名函数的 forEach 方法,将每位员工的姓名转换为大写后打印
  5. 使用带有第三个匿名函数的 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 方法调用,每次调用都使用自己的匿名函数。匿名函数应以内联方式定义,不要为它们命名。每个匿名函数都应接收一个参数,用来表示当前员工的姓名,并执行指定的操作。使用字符串插值,按照上方所示的格式准确地输出消息。

亲手试试

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. 打印姓名的长度
  
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程控制中的所有课

自己练习: Dart 在线编译器