変数でのEnumの使用
CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 60/65。
列挙型(enum)の定義方法を理解したところで、次はプログラムの中で実際にそれらを使用する方法を学びましょう。列挙型を作成したら、その列挙型の変数を宣言し、特定の値を割り当てることができます。
enum型の変数を宣言するには、他のデータ型と同様に、enum名の後に変数名を指定します。
Weather todayWeather = Weather.sunny;ドット記法を使用してenumの値にアクセスする方法に注目してください:Weather.sunny。これは、Weather enumからsunnyという値を取得したいことをDartに伝えます。
変数の値は、他の任意の有効な列挙型の値に変更できます:
todayWeather = Weather.rainy;
todayWeather = Weather.cloudy;enum変数を使用する利点は、Dartが有効なenum値のみを割り当てられるように保証することです。誤って "stormy" やその他の無効な値を Weather 変数に割り当てることはできず、これにより一般的なプログラミングエラーを防ぎ、コードの信頼性を高めることができます。
チャレンジ
簡単enumと変数を使用して、シンプルなタスク管理システムを管理するプログラムを作成してください。あなたのタスクは以下の通りです:
todo、inProgress、testing、completed、cancelledという値を持つ、TaskStatusという名前のenumを定義します。TaskStatus型のtask1Statusという変数を作成し、TaskStatus.todoという値を代入します。TaskStatus型のtask2Statusという変数を作成し、TaskStatus.inProgressという値を代入します。TaskStatus型のtask3Statusという変数を作成し、TaskStatus.completedという値を代入します。- すべてのタスクの初期ステータスを、次の形式で出力します:
Task 1 status: TaskStatus.todo - タスク2の初期ステータスを、次の形式で出力します:
Task 2 status: TaskStatus.inProgress - タスク3の初期ステータスを、次の形式で出力します:
Task 3 status: TaskStatus.completed task1StatusをTaskStatus.inProgressに更新します。task2StatusをTaskStatus.testingに更新します。- 更新されたタスク1のステータスを、次の形式で出力します:
Updated Task 1 status: TaskStatus.inProgress - 更新されたタスク2のステータスを、次の形式で出力します:
Updated Task 2 status: TaskStatus.testing - タスク3の最終ステータスを、次の形式で出力します:
Final Task 3 status: TaskStatus.completed
プログラムでは、enumキーワードを使用した適切なenumの定義、enum型を用いた変数の宣言、ドット記法によるenum値へのアクセス、およびenum変数の更新を実演する必要があります。enum名はキャピタルケース(大文字で始まる)、enum値は小文字で記述するというDartの命名規則に従ってください。
チートシート
enum型の変数を宣言するには、enum名の後に変数名を指定します。
Weather todayWeather = Weather.sunny;EnumName.value という形式のドット記法を使用して、enumの値にアクセスします:
todayWeather = Weather.rainy;
todayWeather = Weather.cloudy;Dartは、enum変数に有効なenum値のみを割り当てられるようにすることで、無効な割り当てを防ぎ、コードの信頼性を高めます。
自分で試してみよう
import 'dart:io';
// TODO: ここでTaskStatus列挙型を定義してください
void main() {
// TODO: ここにコードを記述してください
// 1. task1Status変数を作成し、TaskStatus.todoを代入します
// 2. task2Status変数を作成し、TaskStatus.inProgressを代入します
// 3. task3Status変数を作成し、TaskStatus.completedを代入します
// 4. すべてのタスクの初期ステータスを表示します
// 5. 必要に応じてタスクのステータスを更新します
// 6. 更新されたステータスと最終的なステータスを表示します
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
1リスト操作の応用
リストのプロパティ: first と lastリストの状態: isEmpty と isNotEmptyリストの反転リストへの追加: insertリストの削除: removeWhereリスト内の検索: indexOfリストのソートリストのシャッフルまとめ - リストオーガナイザー