如何在Dart中设置枚举索引的起始值?

3

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

enum UserRoles{
 admin = 1,
 user,
 vendor
}

有类似的东西吗?

1个回答

4
有两种方法可以做到这一点:
  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开始。 - Guzumba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接