リストのプロパティ: first と last
CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 1/65。
リストを扱う際、最初または最後の要素にアクセスする必要がよくあります。[0] や [list.length - 1] のようなインデックス番号を使用する代わりに、Dartはこれをはるかに簡単にする2つの便利なプロパティを提供しています。
.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 プロパティを使用してオープニングトラックとクロージングトラックにアクセスする必要があります。
チートシート
.first プロパティと .last プロパティを使用して、リストの最初と最後の要素にアクセスします。
List<String> planets = ['Mercury', 'Venus', 'Earth', 'Mars'];
String firstPlanet = planets.first; // 'Mercury'
String lastPlanet = planets.last; // 'Mars'これらのプロパティは、[0] や [list.length - 1] のようなインデックス番号を使用するよりも可読性が高く、空ではない任意のリストで動作します。
自分で試してみよう
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}");
// ここでオープニングトラックとクロージングトラックを出力します
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
1リスト操作の応用
リストのプロパティ: first と lastリストの状態: isEmpty と isNotEmptyリストの反転リストへの追加: insertリストの削除: removeWhereリスト内の検索: indexOfリストのソートリストのシャッフルまとめ - リストオーガナイザー