【问题标题】:How to set enum index start value in dart? [duplicate]如何在飞镖中设置枚举索引起始值? [复制]
【发布时间】:2021-06-01 12:44:01
【问题描述】:

我喜欢设置枚举索引从 1 开始(因为它默认为零)。 预计

enum UserRoles{
 admin = 1,
 user,
 vendor
}

有没有类似的?

【问题讨论】:

    标签: flutter dart enums


    【解决方案1】:

    有两种方法可以做到这一点:

    1. 添加一些虚拟枚举常量:
    enum UserRoles {
      _,
      admin,
      user,
      vendor
    }
    
    print(UserRoles.values.indexOf(UserRoles.admin));  // 1
    print(UserRoles.values.indexOf(UserRoles.user));   // 2
    print(UserRoles.values.indexOf(UserRoles.vendor)); // 3
    

    缺点:有人可以传递_ 用户角色,这可能是无效的。

    1. 创建一个假枚举:
    class UserRoles {
      static UserRoles admin = UserRoles._();
      static UserRoles user = UserRoles._();
      static UserRoles vendor = UserRoles._();
      static List<UserRoles> values = [admin, user, vendor];
      
      UserRoles._();
      
      static int indexOf(UserRoles role) {
        return values.indexOf(role) + 1; 
      }
    }
    
    print(UserRoles.indexOf(UserRoles.admin));  // 1
    print(UserRoles.indexOf(UserRoles.user));   // 2
    print(UserRoles.indexOf(UserRoles.vendor)); // 3
    

    【讨论】:

    • 虚拟枚举运行良好,因为我需要的只是从 1 开始的索引。
    猜你喜欢
    • 2016-08-20
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2018-10-05
    • 2011-09-06
    • 2020-10-30
    相关资源
    最近更新 更多