如何从整数值创建枚举

时间:2019-11-18 21:47:53

标签: scala

我的应用程序具有以下Enum

object UserTokenType extends Enumeration {
  type TokenType = Value
  val RegistrationConfirmation = Value("RegistrationConfirmation")
  val ResetPasswordConfirmation = Value("ResetPasswordConfirmation")
}

我使用id中的Enum将枚举值存储在数据库中。从数据库读取值时,我想重新创建Enum,以便可以在数据模型中传递它。目前,我已按照以下步骤进行操作

val userTokenType:UserTokenType.TokenType = if(row.getInt("is_sign_up") == UserTokenType.RegistrationConfirmation.id) {
      UserTokenType.RegistrationConfirmation
    }else{
      UserTokenType.ResetPasswordConfirmation
    }

Int转换为Enum的正确方法上方吗?

1 个答案:

答案 0 :(得分:1)

正如评论中提到的@ som-snytt一样,您可以使用[apply(x:Int)](https://www.scala-lang.org/api/current/scala/Enumeration.html#apply(x:Int):Enumeration.this.Value)来构造枚举:

row.getInt("is_sign_up") match {
  case id if id >= 0 && id < UserTokenType.maxId => Some(UserTokenType(id))
  case _ => None
}