作者:slightboy
看到好多同学权限判断都是用字符串然后或分割或截取
其实对于允许/不允许(true/false)这种的权限,用逻辑运算再恰当不过了
声明下:本文针对入门和为掌握的同学,如果已经懂了那可以无视了
可能意思表达的不是很清楚,敬请原谅.
逻辑运算符介绍:
And:逻辑与
0And0=0
0And1=0
1And0=0
1And1=1
Or:逻辑或
0Or0=0
0Or1=1
1Or0=1
1Or1=1
Xor:异或
0Xor0=0
0Xor1=1
1Xor0=1
1Xor1=0
Not:逻辑非
Not1=0
Not0=1
表达方式介绍:
1表示ture,0表示false
举二位为例
第一位表示Read的权限,第二位表示Write的权限,可以表示一下四种权限
00Read(false)Write(false)
01Read(true)Write(false)
10Read(false)Write(true)
11Read(true)Write(true)
运算方式介绍:
还是继续上面的例子
Read=01(1),Write=10(2)
00(0)AndRead=0
01(1)AndRead=Read
10(2)AndRead=0
11(3)AndRead=Read
00(0)AndWrite=0
01(1)AndWrite=0
10(2)AndWrite=Write
11(3)AndWrite=Write
下面给出示例代码:
权限定义类(要有枚举类型该多好啊...)
ClassPermissionType
PublicRead
PublicWrite
PublicDelete
PrivateSubClass_Initialize
Read=1
Write=2
Delete=4
EndSub
EndClass
权限类
ClassPermissionSetComponent
PrivateintValue
PublicPropertyGetRead()
Read=GetValue(Permission.Read)
EndProperty
PublicPropertyLetRead(arg)
CallSetValue(Permission.Read,arg)
EndProperty
PublicPropertyGetWrite()
Write=GetValue(Permission.Write)
EndProperty
PublicPropertyLetWrite(arg)
CallSetValue(Permission.Write,arg)
EndProperty
PublicPropertyGetDelete()
Delete=GetValue(Permission.Delete)
EndProperty
PublicPropertyLetDelete(arg)
CallSetValue(Permission.Delete,arg)
EndProperty
PublicPropertyGetValue()
Value=intValue
EndProperty
PublicPropertyLetValue(arg)
intValue=arg
EndProperty
PublicFunctionGetValue(intType)
GetValue=(ValueandintType)=intType
EndFunction
PublicSubSetValue(intType,boolValue)
IF(boolValue)Then
Value=ValueOrintType
Else
Value=ValueAnd(NotintType)
EndIF
EndSub
EndClass
运用示例代码:
DimPermission:SetPermission=newPermissionType
DimPermissionSet:SetPermissionSet=newPermissionSetComponent
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)
Functionw(o)
Response.Write("<br/>"&o)
EndFunction
今天的课程就到这里,大家可以举一反三,下课...