Chcę bezpiecznie móc uzyskać wyliczenie na podstawie wartości.
object UserType extends Enumeration {
type UserType = Value
val Anonymous, Member, Paid = Value
}
Jeśli zrobię:
UserType(100)
Pojawia się błąd:
java.util.NoSuchElementException: key not found: 100
at scala.collection.MapLike$class.default(MapLike.scala:228)
at scala.collection.AbstractMap.default(Map.scala:59)
at scala.collection.mutable.HashMap.apply(HashMap.scala:65)
at scala.Enumeration.apply(Enumeration.scala:114)
... 32 elided
Czy istnieje sposób, aby to zrobić?
Odpowiedzi:
0 dla odpowiedzi № 1Możesz spróbować użyć find na ValueSet of Enum, a następnie uzyskać opcję. Jeśli ta wartość nie istnieje, otrzymasz wartość None (użycie getOrElse jest tu bardzo wygodne).
Przykład:
UserType.values.find(_ == 100)
Naprawdę poleciłbym również przeczytać ta odpowiedź to wyjaśnia, jak wymodelować bezpieczniejsze wyliczenia tego typu.