在Scala 2.7中,Enumeration提供Set32/Set64来构建枚举集,并轻松获取Long/Int中的按位值,或者从Long/Int值(简化数据库存储)中构建枚举值.Scala 2.8删除了这些类.2.8 lib中有替代品吗?
该表示非常容易实现,您应该自己执行此操作,因为 Scala 库的内部实现可能会发生变化,并且您的数据将被破坏:
object WeekDay extends Enumeration {
type WeekDay = Value
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
import WeekDay._
val values = Set(Mon,Wed,Fri)
require(values.length < 31)
(0 /: values) ((s, c) => s | 1 << c.id).toBinaryString
Run Code Online (Sandbox Code Playgroud)
请记住,将序数存储在数据库中是脆弱的:Storing EnumSet in a database? 。您应该为每个值选择一个稳定的序数。