我有工作日的标志枚举表示,例如:
weekdays{
Mon: 1
Tues: 2
Wed: 4
Thurs: 8
Fri: 16
Sat: 32
Sun: 64
}
因此,所有工作日都可以表示为周一至周五的值之和
1 + 2 + 8 + 4 + 16 =31
如果我的值是31,那么我想解释的是,然后如何向后移动并推断出M,T,W,TH,Fri是这个数字的候选天数。
答案 0 :(得分:3)
你可以找到枚举值
enum Weekdays {
Mon(1), Tues(2), Wed(4), Thurs(8), Fri(16), Sat(32), Sun(64)
int bit
Weekdays(bit) { this.bit = bit }
}
def day = 31
println Weekdays.values().findAll{it.bit&day}
//; [Mon, Tues, Wed, Thurs, Fri]