2017-02-28 56 views
1

我想安全地得到一個基於值的枚舉。如何安全地初始化一個基於int值的Enum?

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

如果我做的:

UserType(100) 

我得到一個錯誤:

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 

有沒有一種類型安全的方式做到這一點?

+1

'Fraid not;你必須自己處理或包裝異常。 – Yawar

回答

0

你可以嘗試在Enum的ValueSet上使用find,然後得到一個選項。如果該值不存在,您將得到一個None值(使用getOrElse在此非常方便)。

例子:

UserType.values.find(_ == 100) 

我真的建議你也看過this answer說明如何更好的類型安全的枚舉建模。