Mah*_*hdi 1 types enumeration scala
考虑WeekDays枚举:
object WeekDay extends Enumeration {
type WeekDay = Value
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
Run Code Online (Sandbox Code Playgroud)
现在我想定义一个只能在周末作为值的变量,例如:
val weekend: WeekDay.Sat | WeekDay.Sun
Run Code Online (Sandbox Code Playgroud)
但显然这不是正确的Scala语法.我有什么方法可以做或近似这个?
只需用Google搜索"Scala枚举",然后点击第二个链接.简而言之,引用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 );
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |