Menu
Coddy logo textTech

変数での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 変数に割り当てることはできず、これにより一般的なプログラミングエラーを防ぎ、コードの信頼性を高めることができます。

challenge icon

チャレンジ

簡単

enumと変数を使用して、シンプルなタスク管理システムを管理するプログラムを作成してください。あなたのタスクは以下の通りです:

  1. todoinProgresstestingcompletedcancelledという値を持つ、TaskStatusという名前のenumを定義します。
  2. TaskStatus型のtask1Statusという変数を作成し、TaskStatus.todoという値を代入します。
  3. TaskStatus型のtask2Statusという変数を作成し、TaskStatus.inProgressという値を代入します。
  4. TaskStatus型のtask3Statusという変数を作成し、TaskStatus.completedという値を代入します。
  5. すべてのタスクの初期ステータスを、次の形式で出力します:Task 1 status: TaskStatus.todo
  6. タスク2の初期ステータスを、次の形式で出力します:Task 2 status: TaskStatus.inProgress
  7. タスク3の初期ステータスを、次の形式で出力します:Task 3 status: TaskStatus.completed
  8. task1StatusTaskStatus.inProgressに更新します。
  9. task2StatusTaskStatus.testingに更新します。
  10. 更新されたタスク1のステータスを、次の形式で出力します:Updated Task 1 status: TaskStatus.inProgress
  11. 更新されたタスク2のステータスを、次の形式で出力します:Updated Task 2 status: TaskStatus.testing
  12. タスク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. 更新されたステータスと最終的なステータスを表示します
  
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン