2010-06-28 33 views
5

Trong Scala 2.7, liệt kê cung cấp Set32/Set64 để tạo bộ enum và dễ dàng lấy giá trị bitwise trong Long/Int hoặc xây dựng enum thiết lập từ Long/Int giá trị (làm giảm dung lượng lưu trữ db). Scala 2.8 đã xóa các lớp này. Có một sự thay thế trong 2.8 lib?Cách lấy giá trị Long/Int của bộ enum trong Scala 2.8

Trả lời

2

Các đại diện là khá dễ dàng để thực hiện và bạn nên làm điều này bản thân như việc thực hiện nội bộ của libs Scala có thể thay đổi và dữ liệu của bạn sẽ được chia:

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 

Hãy ghi nhớ rằng lưu trữ các thứ tự trong cơ sở dữ liệu mong manh: Storing EnumSet in a database?. Bạn nên chọn một thứ tự stabile cho mỗi giá trị.

+0

'/:' tương đương với 'foldLeft' – KevinO

Các vấn đề liên quan