列表属性:第一个和最后一个
本课属于 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'这些属性适用于任何非空列表,并会自动为你处理索引计算。这样,当你需要处理列表开头或末尾的元素时,代码会更简洁,也更容易理解。
挑战
简单创建一个程序,通过访问音乐播放列表中的第一首和最后一首歌曲来分析播放列表。你的程序应当:
- 读取一个表示播放列表名称的字符串输入
- 读取多个表示歌曲名称的字符串输入(输入为空字符串时结束)
- 使用
.first属性获取播放列表中的第一首歌曲 - 使用
.last属性获取播放列表中的最后一首歌曲 - 按照下方所示的确切格式打印播放列表分析结果
例如,如果播放列表名称是 "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}");
// 在这里打印开场曲目和结束曲目
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程控制中的所有课
自己练习: Dart 在线编译器