フィールドとメソッドを持つ拡張Enum
各値にデータと振る舞いを持たせる
「フィールドとメソッドを持つ拡張Enum」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
Enum はデータを持てる
最新の Dart では、enum の各メンバーに独自のデータを持たせられます。これは拡張 enumと呼ばれ、単純なラベルを豊かな値に変えます。
フィールドを追加する
enum にfinalフィールドを宣言し、各メンバーに値を渡します。これで各メンバーが追加データを持つようになります。
enum Planet {
earth(9.8), mars(3.7);
final double gravity;
}const コンストラクターが必要
拡張 enum でフィールドを設定するにはconstコンストラクターが必要です。値が作成されるとき、各メンバーに対して1回実行されます。
const Planet(this.gravity);メンバーからコンストラクター引数を渡す
かっこ内の値はコンストラクター引数です。earth(9.8) は、重力を 9.8 に設定して earth を作成するという意味です。
earth(9.8), mars(3.7);メンバーのフィールドを読み取る
通常のプロパティと同じように、メンバーを通してデータにアクセスします。各メンバーは自身に保存された値を返します。
print(Planet.earth.gravity); // 9.8複数のフィールド
拡張 enum は複数のフィールドを同時に持てます。コンストラクターにフィールドを列挙し、各メンバーにそれぞれの値を指定します。
enum Coin { penny(1, "1c"), dime(10, "10c"); }メソッドを追加する
拡張 enum ではメソッドも定義できます。メソッドからメンバーのフィールドを利用できるため、各値に実際の振る舞いを持たせられます。
double weightOf(double mass) => mass * gravity;Enum のメソッドを呼び出す
通常のオブジェクトと同じように、任意のメンバーでメソッドを呼び出します。そのメンバー自身のフィールド値を使って実行されます。
print(Planet.mars.weightOf(70)); // 259.0Getter を追加する
計算によるgetterも利用できます。新しい値を保存せず、フィールドから導き出した値を返します。
bool get isStrong => gravity > 5;Enum であることに変わりはない
機能が増えても、拡張 enum はvalues、index、name を引き続き持ちます。フィールドやメソッドを追加しても失うものはありません。
print(Planet.values.length); // 2拡張するタイミング
色と16進数のカラーコードのように、各選択肢が関連するデータを持つ場合は拡張 enumを使います。データと選択肢を一体化できます。
クイックチェック
フィールドを持つ拡張 enum に必ず含める必要があるものは何ですか?
まとめ: 拡張 Enum
拡張 enum では const コンストラクターを通じてフィールドとメソッドを持たせられるため、各メンバーが独自のデータと振る舞いを持てることを学びました。🚀
よくある質問
「フィールドとメソッドを持つ拡張Enum」レッスンは無料ですか?
はい。「フィールドとメソッドを持つ拡張Enum」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「フィールドとメソッドを持つ拡張Enum」で何を学びますか?
各値にデータと振る舞いを持たせる ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「フィールドとメソッドを持つ拡張Enum」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 通常のEnumの宣言と使用
- Enumの値、index、name
- フィールドとメソッドを持つ拡張Enum
- Enumをswitchで漏れなく処理する