【发布时间】:2010-06-28 06:27:41
【问题描述】:
在 Scala 2.7 中,Enumeration 提供 Set32/Set64 来构建枚举集并轻松获取 Long/Int 中的按位值或从 Long/Int 值构建枚举集(这简化了数据库存储)。 Scala 2.8 删除了这些类。 2.8 lib有替代品吗?
【问题讨论】:
标签: scala enumeration
在 Scala 2.7 中,Enumeration 提供 Set32/Set64 来构建枚举集并轻松获取 Long/Int 中的按位值或从 Long/Int 值构建枚举集(这简化了数据库存储)。 Scala 2.8 删除了这些类。 2.8 lib有替代品吗?
【问题讨论】:
标签: scala enumeration
表示很容易实现,你应该自己做,因为 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
请记住,将序数存储在数据库中是脆弱的:Storing EnumSet in a database?。您应该为每个值选择一个稳定的序数。
【讨论】:
/: 等价于 foldLeft