В scala 2.13.x есть ли способ перебирать значения перечисления, где значение является строкой?

#scala

Вопрос:

У меня есть такое перечисление:

 object UserType extends Enumeration {
   type UserType = String
   val member = "member"
   val admin = "admin"
}
 

Есть ли способ получить все значения перечисления, чтобы оно возвращало:

 val userTypes: Set[String] = UserType.values.toSet
 

По какой-то причине UserType.values возвращает тип UserType.Value или что-то в этом роде, а не строку.

Есть ли способ добиться этого?

Комментарии:

1. Может быть, вы захотите взглянуть на это в Enumeratum .

2. Перечисление в Scala , по-видимому, содержит весь пример кода, который может вам понадобиться для этой цели.

Ответ №1:

Если вы хотите использовать перечисление, вам нужно установить Value свой тип:

 type UserType = Value
 

А затем определите переменную как:

 val admin = Value("admin")
 

В противном случае вы не используете Перечисление.


Для получения списка всех значений:

 UserType.values.toList