考虑LogCreateUser
枚举:
WeekDays
现在我想定义一个只能在周末作为值的变量,例如:
object WeekDay extends Enumeration {
type WeekDay = Value
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
但显然这不是正确的Scala语法。我有什么方法可以做或近似这个吗?
答案 0 :(得分:5)
直接用谷歌搜索" Scala枚举",然后点击second link。简而言之,引用Martin Odersky的话说,枚举是指具有名称和顺序的简单整数常量。如果需要类型,则应使用案例类。因为周末也是工作日,所以听起来是合适的:
sealed trait Weekday
sealed trait WorkDay extends Weekday
case object Monday extends WorkDay
sealed trait WeekendDay extends Weekday
case object Saturday extends WeekendDay
case object Sunday extends WeekendDay
object Main {
def onlyWeekendDays(d: WeekendDay) {
println(d)
}
def allDays( d: Weekday ) {}
def test() {
onlyWeekendDays( Saturday );
allDays( Saturday );
allDays( Monday );
// this fails to type-check: onlyWeekendDays( Monday );
}
}