枚举即单选
集合即多选
将集合问题变成是非逻辑问题,两个元素的集合,是非问题。
将单选问题转换成集成问题,
例如如果有集合{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)