Menu
CoddyTech

列表状态: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 等属性之前,先检查列表是否为空,有助于你编写更安全、更可靠的代码。

challenge icon

挑战

简单

创建一个程序,通过检查任务列表是否为空或是否包含项目来管理任务队列系统。你的程序应当:

  1. 读取一个表示队列名称的字符串输入
  2. 读取多个表示任务的字符串输入(收到空字符串时,输入结束)
  3. 使用 isEmpty 属性检查任务列表是否为空
  4. 使用 isNotEmpty 属性检查任务列表是否包含任务
  5. 按照下方显示的准确格式输出队列状态

例如,如果队列名称是 "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');
  // 打印是否有任务、是否为空、任务数量和状态
}
quiz icon自我测试

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

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

自己练习: Dart 在线编译器