Как получить значение Long / Int для перечисления, заданного в Scala 2.8 - PullRequest
5 голосов
/ 28 июня 2010

В Scala 2.7, Enumeration предоставляет Set32 / Set64 для построения набора enum и легко получает побитовое значение в Long / Int или set enum set из значения Long / Int (что упрощает хранение в дБ).Scala 2.8 удалил эти классы.Есть ли замена в 2.8 lib?

1 Ответ

2 голосов
/ 28 июня 2010

Представление довольно легко реализовать, и вы должны сделать это самостоятельно, поскольку внутренняя реализация библиотек 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

Имейте в виду, что хранение порядкового номера вбаза данных хрупкая: Хранение EnumSet в базе данных? .Вы должны выбрать стабильный порядковый номер для каждого значения.

...