简体   繁体   English

如何为 c++ 中的 dart 枚举赋值

[英]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.我正在尝试将 c++ 改编为 dart,我遇到了这种情况,枚举分配了我认为的默认值。 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我想在 dart 中复制相同的操作,似乎他将这些值分配给一个范围内的每个枚举

Yes, it is possible to adapt this code to Dart/Flutter.是的,可以将此代码改编为Dart/Flutter。

In Dart, you can use the enum keyword to define an enumeration.在Dart中,可以使用enum关键字来定义一个枚举。 The syntax is similar to C++, but there is no need to specify a type like uint8_t.语法类似于C++,但不需要像uint8_t 那样指定类型。

Regarding the default values, you can initialize the enum members with a value like in C++.关于默认值,您可以使用 C++ 中的值初始化枚举成员。

Here is an example of how the C++ code could be adapted to Dart:以下是 C++ 代码如何适应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.您还可以使用 Map 将默认值分配给每个枚举成员。

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.以上两个例子在 dart/flutter 中都可以正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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