【问题标题】:How to get Long/Int value of a enum set in Scala 2.8如何在 Scala 2.8 中获取枚举集的 Long/Int 值
【发布时间】:2010-06-28 06:27:41
【问题描述】:

在 Scala 2.7 中,Enumeration 提供 Set32/Set64 来构建枚举集并轻松获取 Long/Int 中的按位值或从 Long/Int 值构建枚举集(这简化了数据库存储)。 Scala 2.8 删除了这些类。 2.8 lib有替代品吗?

【问题讨论】:

    标签: scala enumeration


    【解决方案1】:

    表示很容易实现,你应该自己做,因为 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
    猜你喜欢
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2017-10-08
    • 2017-11-07
    • 2012-06-18
    相关资源
    最近更新 更多