作者: 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 = 1
0 Xor 1 = 1
1 Xor 0 = 1
1 Xor 1 = 1
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 PermissionTypePublic ReadPublic WritePublic DeletePrivate Sub Class_InitializeRead = 1Write = 2Delete = 4End SubEnd Class
权限类
Class PermissionSetComponentPrivate intValuePublic Property Get Read()Read = GetValue(Permission.Read)End PropertyPublic Property Let Read(arg)Call SetValue(Permission.Read, arg)End PropertyPublic Property Get Write()Write = GetValue(Permission.Write)End PropertyPublic Property Let Write(arg)Call SetValue(Permission.Write, arg)End PropertyPublic Property Get Delete()Delete = GetValue(Permission.Delete)End PropertyPublic Property Let Delete(arg)Call SetValue(Permission.Delete, arg)End PropertyPublic Property Get Value()Value = intValueEnd PropertyPublic Property Let Value(arg)intValue = argEnd PropertyPublic Function GetValue(intType)GetValue = (Value and intType) = intTypeEnd FunctionPublic Sub SetValue(intType, boolValue)IF (boolValue) ThenValue = Value Or intTypeElseValue = Value And (Not intType)End IFEnd SubEnd Class
运用示例代码:
Dim Permission : Set Permission = new PermissionTypeDim PermissionSet : Set PermissionSet = new PermissionSetComponentPermissionSet.Value = 0w("Read:")PermissionSet.Read = falsew(PermissionSet.Value &" "& PermissionSet.Read)PermissionSet.Read = truew(PermissionSet.Value &" "& PermissionSet.Read)w("Write:")PermissionSet.Write = falsew(PermissionSet.Value &" "& PermissionSet.Write)PermissionSet.Write = truew(PermissionSet.Value &" "& PermissionSet.Write)w("Delete:")PermissionSet.Delete = falsew(PermissionSet.Value &" "& PermissionSet.Delete)PermissionSet.Delete = truew(PermissionSet.Value &" "& PermissionSet.Delete)Function w(o)Response.Write("<br />"& o)End Function
今天的课程就到这里, 大家可以举一反三, 下课...
首发于: 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 = 1
0 Xor 1 = 1
1 Xor 0 = 1
1 Xor 1 = 1
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 PermissionTypePublic ReadPublic WritePublic DeletePrivate Sub Class_InitializeRead = 1Write = 2Delete = 4End SubEnd Class
权限类
Class PermissionSetComponentPrivate intValuePublic Property Get Read()Read = GetValue(Permission.Read)End PropertyPublic Property Let Read(arg)Call SetValue(Permission.Read, arg)End PropertyPublic Property Get Write()Write = GetValue(Permission.Write)End PropertyPublic Property Let Write(arg)Call SetValue(Permission.Write, arg)End PropertyPublic Property Get Delete()Delete = GetValue(Permission.Delete)End PropertyPublic Property Let Delete(arg)Call SetValue(Permission.Delete, arg)End PropertyPublic Property Get Value()Value = intValueEnd PropertyPublic Property Let Value(arg)intValue = argEnd PropertyPublic Function GetValue(intType)GetValue = (Value and intType) = intTypeEnd FunctionPublic Sub SetValue(intType, boolValue)IF (boolValue) ThenValue = Value Or intTypeElseValue = Value And (Not intType)End IFEnd SubEnd Class
运用示例代码:
Dim Permission : Set Permission = new PermissionTypeDim PermissionSet : Set PermissionSet = new PermissionSetComponentPermissionSet.Value = 0w("Read:")PermissionSet.Read = falsew(PermissionSet.Value &" "& PermissionSet.Read)PermissionSet.Read = truew(PermissionSet.Value &" "& PermissionSet.Read)w("Write:")PermissionSet.Write = falsew(PermissionSet.Value &" "& PermissionSet.Write)PermissionSet.Write = truew(PermissionSet.Value &" "& PermissionSet.Write)w("Delete:")PermissionSet.Delete = falsew(PermissionSet.Value &" "& PermissionSet.Delete)PermissionSet.Delete = truew(PermissionSet.Value &" "& PermissionSet.Delete)Function w(o)Response.Write("<br />"& o)End Function
今天的课程就到这里, 大家可以举一反三, 下课...
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月15日
2024年11月15日
- 老头杯第二届规则是什么 英雄联盟老头杯第二届规则介绍
- 王崴-爵士听堂.蓝色波萨(HQCD)[WAV+CUE]
- 群星《欧美动听情歌·柔情第5季》2CD【DTS-WAV分轨】
- [极品珍藏]德意志进行曲集卡拉扬SACD[WAV+CUE]
- 前暴雪制作人呼吁反击DEI 玩家:夺回文化!
- 腾讯证实子公司Sharkmob大规模裁员:整个市场很低迷
- 荣耀加冕 问鼎冠军 中国代表队获第四届东亚电竞锦标赛团体总冠军
- 污甩乐队.2024-Let.the.dirt.left【摩登天空】【FLAC分轨】
- 杜德伟.1994-ALL.FOR.YOU(英)【滚石】【WAV+CUE】
- 群星.2013-百代好声音ADMSCD1【EMI百代】【WAV+CUE】
- 群星《私人音乐精选示范碟》PRIVATEMUSIC 发烧唱片名碟[WAV+CUE][1.1G]
- 山口百惠《あなたへの子守唄》日本索尼钢刻字首版[WAV分轨][1.1G]
- 群星《宝丽金20周年特别发烧版》1:1母盘直刻限量编号[低速原抓WAV+CUE][1G]
- 凤飞飞.1984-仲夏(夏艳)[WAV]
- 常安《民歌红·江南燕》DTS-ES6.1[WAV]