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

时间:2017-04-25 15:36:33

标签: scala

我有一个这样的对象:

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

1 个答案:

答案 0 :(得分:2)

要检查canLogin - 您要做的就是将结果与零进行比较 - 如果用户可以登录,结果将为正:

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

要创建“所有权限”值 - 嗯,是的,您已正确启动它:

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