Menu
CoddyTech

列表属性:第一个和最后一个

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

处理列表时,你经常需要访问第一个或最后一个元素。Dart 提供了两个方便的属性,让这件事简单得多,你不必使用 [0] 或 [list.length - 1] 这样的索引。

.first 属性会为你提供列表中的第一个元素,而 .last 属性会为你提供最后一个元素。与计算索引位置相比,这些属性更易读,也不容易出错。

List<String> planets = ['Mercury', 'Venus', 'Earth', 'Mars'];

String firstPlanet = planets.first;   // 'Mercury'
String lastPlanet = planets.last;     // 'Mars'

这些属性适用于任何非空列表,并会自动为你处理索引计算。这样,当你需要处理列表开头或末尾的元素时,代码会更简洁,也更容易理解。

challenge icon

挑战

简单

创建一个程序,通过访问音乐播放列表中的第一首和最后一首歌曲来分析播放列表。你的程序应当:

  1. 读取一个表示播放列表名称的字符串输入
  2. 读取多个表示歌曲名称的字符串输入(输入为空字符串时结束)
  3. 使用 .first 属性获取播放列表中的第一首歌曲
  4. 使用 .last 属性获取播放列表中的最后一首歌曲
  5. 按照下方所示的确切格式打印播放列表分析结果

例如,如果播放列表名称是 "My Favorites",歌曲是 "Bohemian Rhapsody"、"Imagine"、"Hotel California",那么你的程序应输出:

Playlist: My Favorites
Total songs: 3
Opening track: Bohemian Rhapsody
Closing track: Hotel California

你的程序必须能够处理歌曲数量任意的播放列表,并使用 .first 和 .last 属性访问开场曲和收尾曲。

亲手试试

import 'dart:io';

void main() {
  // 读取播放列表名称
  String? playlistName = stdin.readLineSync();
  
  // 读取歌曲,直到遇到空字符串
  List<String> songs = [];
  String? song;
  while ((song = stdin.readLineSync()) != null && song!.isNotEmpty) {
    songs.add(song);
  }
  
  // TODO: 在下方编写你的代码
  // 使用 songs.first 和 songs.last 获取开场曲目和结束曲目
  
  // 输出播放列表分析结果
  print("Playlist: $playlistName");
  print("Total songs: ${songs.length}");
  // 在这里打印开场曲目和结束曲目
}
quiz icon自我测试

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

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

自己练习: Dart 在线编译器