1. ホーム
  2. enums

[解決済み] Dartは列挙をサポートしていますか?

2022-11-02 06:41:55

質問

Dartは列挙をサポートしていますか?例えば

enum myFruitEnum { Apple, Banana }

ドキュメントをざっと検索してみると、そうではなさそうです。

どのように解決するのですか?

はじめに 1.8 のように、enumを使用することができます。

enum Fruit {
  apple, banana
}

main() {
  var a = Fruit.apple;
  switch (a) {
    case Fruit.apple:
      print('it is an apple');
      break;
  }

  // get all the values of the enums
  for (List<Fruit> value in Fruit.values) {
    print(value);
  }

  // get the second value
  print(Fruit.values[1]);
}


1.8以前の古い手法です。

class Fruit {
  static const APPLE = const Fruit._(0);
  static const BANANA = const Fruit._(1);

  static get values => [APPLE, BANANA];

  final int value;

  const Fruit._(this.value);
}

クラス内のこれらの静的定数はコンパイル時の定数であり、このクラスはこれで、例えば switch ステートメントで使用できるようになります。

var a = Fruit.APPLE;
switch (a) {
  case Fruit.APPLE:
    print('Yes!');
    break;
}