匿名函数
本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 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 方法调用,每次调用都使用自己的匿名函数。匿名函数应以内联方式定义,不要为它们命名。每个匿名函数都应接收一个参数,用来表示当前员工的姓名,并执行指定的操作。使用字符串插值,按照上方所示的格式准确地输出消息。
亲手试试
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. 打印姓名的长度
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程控制中的所有课
自己练习: Dart 在线编译器