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ď č. 1Môž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.