29 votes

Ne Dart soutien énumérations?

Ne Dart soutien énumérations? Par exemple:

enum myFruitEnum { Apple, Banana }

Une fouille superficielle de la documentation suggère pas.

46voto

Kai Sellgren Points 8423

Personnellement, je préfère cette approche sur Alexandre:

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);
}

La raison en est que ces constantes statiques dans la classe à la compilation des constantes de temps, et cette classe peuvent maintenant être utilisées, par exemple, switch déclarations:

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

L'autre approche ne fonctionne pas dans les cas de ce genre et il fait moins de sens pour moi non constant version de celui-ci.

J'ai utiliser ce formulaire jusqu'à ce que les agents recenseurs arriver dans Dart.

3voto

Alexandre Ardhuin Points 16297

L'énumération devrait être disponible dans le futur. Mais jusqu'à ce Enum a atterri vous pouvez faire quelque chose comme :

class Fruit {
  static final APPLE = new Fruit._();
  static final BANANA = new Fruit._();

  static get values => [APPLE, BANANA];

  Fruit._();
}

1voto

user35443 Points 2031

Ce et ce peut être les réponses à votre question:

... for the technology preview it was decided to leave it out and just 
use static final fields for now. It may be added later.

Vous pouvez toujours faire quelque chose comme ceci:

interface ConnectionState { }
class Connected implements ConnectionState { }
class Connecting implements ConnectionState { }
class Disconnected implements ConnectionState { }

//later
ConnectionState connectionState;
if (connectionState is Connecting) { ... }

ce qui est à mon avis plus clair pour une utilisation. C'est un peu plus difficile pour la programmation de la structure de l'application, mais dans certains cas, il est préférable et clair.

0voto

BraveNewMath Points 1306

comment au sujet de cette approche:

class FruitEnums {
  static const String Apple = "Apple";
  static const String Banana = "Banana";
}

class EnumUsageExample {

  void DoSomething(){

    var fruit = FruitEnums.Apple;
    String message;
    switch(fruit){
      case(FruitEnums.Apple):
        message = "Now slicing $fruit.";
        break;
      default:
        message = "Now slicing $fruit via default case.";
        break;
    }
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X