/ / Ako bezpečne spustiť Enum na základe int hodnoty? - Scala

Ako init Enum na základe hodnoty int bezpečne? - scala

Chcem mať istotu, že budem schopný získať výčet na základe hodnoty.

object UserType extends Enumeration {
type UserType = Value
val Anonymous, Member, Paid = Value
}

Ak to urobím:

UserType(100)

Mám chybu:

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

Existuje typický spôsob, ako to urobiť?

odpovede:

0 pre odpoveď č. 1

Môžete skúsiť použiť find na ValueSet Enumu a potom získať Option. Ak hodnota neexistuje, dostanete hodnotu Žiadna (tu je veľmi výhodné použiť funkciu getOrElse).

Príklad:

UserType.values.find(_ == 100)

Naozaj by som vám odporučil prečítať si túto odpoveď to vysvetľuje, ako modelovať bezpečnejšie vymenované typy výčtu.