枚举转换集合,flagAttribute的意义

来源:互联网 发布:ipad怎么清除缓存数据 编辑:程序博客网 时间:2024/05/22 03:33

枚举即单选

集合即多选

 

将集合问题变成是非逻辑问题,两个元素的集合,是非问题。

将单选问题转换成集成问题,

例如如果有集合{1,2,3}转换成枚枚举则有

C3(1)+C3(2)+C3(3)=3+6+1=10

即{1}{2}{3}{1,2}{2,3}{1,2,3}

 

举列:

问题采用枚举互斥方式

if(true1)

return 1

if(true2)

return 2

if(true1&true2)

return 3

 

如果现在还采用枚举方式,则如需10个if,else,而改为集合,则:

服务端返回“1,2,3”字符串(分隔组合方式,这种方式比较多)

然后js再indexof(1)>0则,msg+="tip1";

则只需三个if。

 

如果采用枚举组合方式,枚举元素有问题()1,2,4)

if(1,2,3,4,5,6,7)用三个数,表达了7种情况

 

1,2,5

10,20,50

100

可重复组合方式

 

=====================

flagAttribute的位枚举也在于此,

位标记集合是一种由组合出现的元素形成的列表,通常设计为以“位或”运算组合新值;枚举类型则通常表达一种语义相对独立的数值集合。而以枚举类型来实现位标记集合是最为完美的组合,简称为位枚举

 

位的两种运算&,|就可以将单选进行组合与筛选,即类似于+,-

这就是单选转换成了多选,select单选菜单转换成了多选列表。

 

flagAttribute的用法更多可参考:

http://book.csdn.net/bookfiles/684/10068421452.shtml

http://www.cnblogs.com/aiyagaze/archive/2006/09/15/505614.html

 

Flags特性影响ToString、Parse和Format方法的执行过程和结果。

 

枚举本质是给程序员用的,友好化信息而已,对于使用者及电脑都没意义。

 

 

 

==================

是,否,全部,互斥单选问题

是,否,多选即可解决

 

意义非常重大

 

网页控件中本质只有,单选(菜单select),多选(列表select),文本框(单行,多行,二进制文件框。无需输入hidden)

 

 

 

 

 

 

 

原创粉丝点击