简体   繁体   中英

How to assign value to dart enum like in c++

I'm trying to adapt a c++ to dart, and I ran into this situation with enum, assigning default values I think. follow the code

enum skills_t : uint8_t {
    SKILL_FIST = 0,
    SKILL_CLUB = 1,
    SKILL_SWORD = 2,
    SKILL_AXE = 3,
    SKILL_DISTANCE = 4,
    SKILL_SHIELD = 5,
    SKILL_FISHING = 6,
    SKILL_CRITICAL_HIT_CHANCE = 7,
    SKILL_CRITICAL_HIT_DAMAGE = 8,
    SKILL_LIFE_LEECH_CHANCE = 9,
    SKILL_LIFE_LEECH_AMOUNT = 10,
    SKILL_MANA_LEECH_CHANCE = 11,
    SKILL_MANA_LEECH_AMOUNT = 12,

    SKILL_MAGLEVEL = 13,
    SKILL_LEVEL = 14,

    SKILL_FIRST = SKILL_FIST,
    SKILL_LAST = SKILL_MANA_LEECH_AMOUNT
};

}
uint32_t skillBase[SKILL_LAST + 1] = {50, 50, 50, 50, 30, 100, 20};

Is it possible to adapt this code to dart/flutter? I would like to replicate the same operation in dart, it seems that he assigned these values to each enum in a range

Yes, it is possible to adapt this code to Dart/Flutter.

In Dart, you can use the enum keyword to define an enumeration. The syntax is similar to C++, but there is no need to specify a type like uint8_t.

Regarding the default values, you can initialize the enum members with a value like in C++.

Here is an example of how the C++ code could be adapted to Dart:

enum Skills {
  FIST,
  CLUB,
  SWORD,
  AXE,
  DISTANCE,
  SHIELD,
  FISHING,
  CRITICAL_HIT_CHANCE,
  CRITICAL_HIT_DAMAGE,
  LIFE_LEECH_CHANCE,
  LIFE_LEECH_AMOUNT,
  MANA_LEECH_CHANCE,
  MANA_LEECH_AMOUNT,
  MAGLEVEL,
  LEVEL,
  FIRST = FIST,
  LAST = MANA_LEECH_AMOUNT,
}

final List<int> skillBase = [
  50, 50, 50, 50, 30, 100, 20
];

You can also use a Map to assign the default values to each enum member.

enum Skills {
  FIST,
  CLUB,
  SWORD,
  AXE,
  DISTANCE,
  SHIELD,
  FISHING,
  CRITICAL_HIT_CHANCE,
  CRITICAL_HIT_DAMAGE,
  LIFE_LEECH_CHANCE,
  LIFE_LEECH_AMOUNT,
  MANA_LEECH_CHANCE,
  MANA_LEECH_AMOUNT,
  MAGLEVEL,
  LEVEL,
  FIRST = FIST,
  LAST = MANA_LEECH_AMOUNT,
}

final Map<Skills, int> skillBase = {
  Skills.FIST: 50,
  Skills.CLUB: 50,
  Skills.SWORD: 50,
  Skills.AXE: 50,
  Skills.DISTANCE: 30,
  Skills.SHIELD: 100,
  Skills.FISHING: 20,
  // Add the rest of the skills
};

Both the above examples will work fine in dart/flutter.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM