作者: slightboy, 时间: 2006-10-14
首发于: http://cs.alienwave.cn/Topic/329.aspx
看到好多同学权限判断都是用字符串 然后或分割或截取
其实对于 允许/不允许(true/false) 这种的权限, 用逻辑运算再恰当不过了
声明下: 本文针对入门和为掌握的同学, 如果已经懂了那可以无视了
可能意思表达的不是很清楚, 敬请原谅.
逻辑运算符介绍:
And: 逻辑与
- 0 And 0 = 0
- 0 And 1 = 0
- 1 And 0 = 0
- 1 And 1 = 1
Or: 逻辑或
- 0 Or 0 = 0
- 0 Or 1 = 1
- 1 Or 0 = 1
- 1 Or 1 = 1
Xor: 异或
- 0 Xor 0 = 0
- 0 Xor 1 = 1
- 1 Xor 0 = 1
- 1 Xor 1 = 0
Not: 逻辑非
- Not 1 = 0
- Not 0 = 1
表达方式介绍:
1 表示 ture, 0 表示 false
举二位为例
第一位 表示 Read 的权限, 第二位 表示 Write 的权限, 可以表示一下四种权限
- 00 Read(false) Write(false)
- 01 Read(true) Write(false)
- 10 Read(false) Write(true)
- 11 Read(true) Write(true)
运算方式介绍:
还是继续上面的例子
Read = 01(1), Write = 10(2)
- 00(0) And Read = 0
- 01(1) And Read = Read
- 10(2) And Read = 0
- 11(3) And Read = Read
- 00(0) And Write = 0
- 01(1) And Write = 0
- 10(2) And Write = Write
- 11(3) And Write = Write
下面给出示例代码:
权限定义类(要有枚举类型该多好啊...)
Class PermissionType Public Read Public Write Public Delete Private Sub Class_Initialize Read = 1 Write = 2 Delete = 4 End Sub End Class
权限类
Class PermissionSetComponent Private intValue Public Property Get Read() Read = GetValue(Permission.Read) End Property Public Property Let Read(arg) Call SetValue(Permission.Read, arg) End Property Public Property Get Write() Write = GetValue(Permission.Write) End Property Public Property Let Write(arg) Call SetValue(Permission.Write, arg) End Property Public Property Get Delete() Delete = GetValue(Permission.Delete) End Property Public Property Let Delete(arg) Call SetValue(Permission.Delete, arg) End Property Public Property Get Value() Value = intValue End Property Public Property Let Value(arg) intValue = arg End Property Public Function GetValue(intType) GetValue = (Value and intType) = intType End Function Public Sub SetValue(intType, boolValue) IF (boolValue) Then Value = Value Or intType Else Value = Value And (Not intType) End IF End Sub End Class
运用示例代码:
Dim Permission : Set Permission = new PermissionType Dim PermissionSet : Set PermissionSet = new PermissionSetComponent PermissionSet.Value = 0 w("Read:") PermissionSet.Read = false w(PermissionSet.Value &" "& PermissionSet.Read) PermissionSet.Read = true w(PermissionSet.Value &" "& PermissionSet.Read) w("Write:") PermissionSet.Write = false w(PermissionSet.Value &" "& PermissionSet.Write) PermissionSet.Write = true w(PermissionSet.Value &" "& PermissionSet.Write) w("Delete:") PermissionSet.Delete = false w(PermissionSet.Value &" "& PermissionSet.Delete) PermissionSet.Delete = true w(PermissionSet.Value &" "& PermissionSet.Delete) Function w(o) Response.Write("<br />"& o) End Function
今天的课程就到这里, 大家可以举一反三, 下课...