我想创建一个包含给定用户安全权限的位。
在c#中,我会通过创建一个枚举来做到这一点,然后我会对二进制值进行一些操作,通过和'和&&'看它是否会产生一个真值。
如何在Ruby中做到最好?
答案 0 :(得分:12)
如果基础值很重要,那么您可以创建一个像枚举一样使用的模块
module Groups
ADMIN = 1
BOSS = 2
CLERK = 4
MEAT = 8
BREAD = 16
CHEESE = 32
end
将权限按位or
一起设置
permissions = Groups::BOSS | Groups::MEAT | Groups::CHEESE
并测试你做一个按位and
>> permissions & Groups::CHEESE > 0
=> true
>> permissions & Groups::BREAD > 0
=> false
我也喜欢如何使用_
这样的
permissions = 0b0010_1010
答案 1 :(得分:4)
Bitwse操作在Ruby中是微不足道的。
> 1 | 2 # Create a bitmask from permission 2^0 + 2^1
=> 3
> 3 & 1 == 1 # See if the bitmask contains the 2^0 permission
=> true
> 3 & 4 == 4 # See if the bitmask contains the 2^2 permission
=> false
答案 2 :(得分:1)