列表状态:isEmpty 和 isNotEmp
本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 2 课,共 65 课。
处理列表元素之前,了解列表中是否确实包含任何项目很重要。Dart 提供了两个简单的属性来检查列表的状态:isEmpty 和 isNotEmpty。
如果列表中没有元素,isEmpty 属性会返回 true;如果至少包含一个元素,则返回 false。isNotEmpty 属性的作用正好相反:列表中有元素时返回 true,列表为空时返回 false。
List<String> emptyCart = [];
List<String> shoppingCart = ['apples', 'bread', 'milk'];
print(emptyCart.isEmpty); // true
print(emptyCart.isNotEmpty); // false
print(shoppingCart.isEmpty); // false
print(shoppingCart.isNotEmpty); // true这些属性在尝试访问列表元素时,对于防止错误特别有用。在使用 .first 或 .last 等属性之前,先检查列表是否为空,有助于你编写更安全、更可靠的代码。
挑战
简单创建一个程序,通过检查任务列表是否为空或是否包含项目来管理任务队列系统。你的程序应当:
- 读取一个表示队列名称的字符串输入
- 读取多个表示任务的字符串输入(收到空字符串时,输入结束)
- 使用
isEmpty属性检查任务列表是否为空 - 使用
isNotEmpty属性检查任务列表是否包含任务 - 按照下方显示的准确格式输出队列状态
例如,如果队列名称是 "Daily Tasks",任务是 "Review emails"、"Attend meeting"、"Write report",你的程序应输出:
Queue: Daily Tasks
Has tasks: true
Is empty: false
Task count: 3
Status: Ready for processing如果队列名称是 "Weekend Tasks",并且没有提供任务(输入为空),你的程序应输出:
Queue: Weekend Tasks
Has tasks: false
Is empty: true
Task count: 0
Status: No tasks to process你的程序必须同时使用 isEmpty 和 isNotEmpty 属性来确定队列状态。有任务时,状态消息应为 "Ready for processing";队列为空时,状态消息应为 "No tasks to process"。
亲手试试
import 'dart:io';
void main() {
// 读取队列名称
String? queueName = stdin.readLineSync();
// 持续读取任务,直到收到空字符串
List<String> tasks = [];
String? task;
while ((task = stdin.readLineSync()) != null && task!.isNotEmpty) {
tasks.add(task);
}
// TODO: 在下方编写你的代码
// 使用 tasks.isEmpty 和 tasks.isNotEmpty 属性检查队列状态
// 根据是否有任务,确定合适的状态消息
// 输出结果
print('Queue: $queueName');
// 打印是否有任务、是否为空、任务数量和状态
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程控制中的所有课
自己练习: Dart 在线编译器