如何设置和检查是否设置了特定位?

问题描述:

我有这样一个对象:如何设置和检查是否设置了特定位?

object PermissionMask { 
    val canLogin = 1 
    val canAbc = 2 
    val canDef = 4 
    val canGhi = 8 
} 

我有一个int类型的属性,将持有的许可值。

如何检查权限是否设置?

def canLogin: Boolean = 
    permissions & PermissionMask.canLog == ??? 

我怎样才能将它们放在一起来设置所有的权限?

permissions = PermissionMask.canLogin | PermissionMask.canAbc 

要检查canLogin - 所有你需要做的是比较的结果为零 - 如果用户可以登录,其结果将是积极的:

def canLogin: Boolean = (permissions & PermissionMask.canLogin) > 0 

要创建“所有权限”价值 - 嗯,是的,你开始正确:

val permissions = PermissionMask.canAbc | 
    PermissionMask.canAbc | 
    PermissionMask.canDef | 
    PermissionMask.canGhi