Scala使用Scala枚举在一周中的几天

示例

可以通过扩展Enumeration创建类似Java的枚举。

object WeekDays extends Enumeration {
  val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}

def isWeekend(day: WeekDays.Value): Boolean = day match {
  caseWeekDays.Sat|WeekDays.Sun=> true
  case _ => false
}

isWeekend(WeekDays.Sun)
res0: Boolean = true

还可以为枚举中的值添加易于理解的名称:

object WeekDays extends Enumeration {
      val Mon = Value("Monday")
      val Tue = Value("Tuesday")
      val Wed = Value("Wednesday")
      val Thu = Value("Thursday")
      val Fri = Value("Friday")
      val Sat = Value("Saturday")
      val Sun = Value("Sunday")
}

println(WeekDays.Mon)
>> Monday

WeekDays.withName("Monday") == WeekDays.Mon
>> res0: Boolean = true

当心不太安全的行为,其中不同的枚举可以评估为相同的实例类型:

object Parity extends Enumeration {
   val Even, Odd = Value
}
  
WeekDays.Mon.isInstanceOf[Parity.Value]
>> res1: Boolean = true