Dans Scala 2.7, l'énumération fournit Set32/Set64 pour créer un ensemble d'énumération et obtenir facilement la valeur bitwise dans Long/Int ou build enum à partir d'un paramètre Long/Int. valeur (qui facilite le stockage db). Scala 2.8 a supprimé ces classes. Y at-il un remplacement dans 2.8 lib?Comment obtenir la valeur Long/Int d'un ensemble d'énumération dans Scala 2.8
5
A
Répondre
2
La représentation est assez facile à mettre en œuvre et vous devez faire vous-même que la mise en œuvre interne des libs Scala peut changer et vos données seraient cassés:
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
Gardez à l'esprit que le stockage de l'ordinal dans la la base de données est fragile: Storing EnumSet in a database?. Vous devriez choisir un ordinal stabile pour chaque valeur.
'/:' équivaut à 'foldLeft' – KevinO