浏览 1726 次
锁定老帖子 主题:对逻辑分支迭代结构扯淡下。
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-05
最后修改:2010-03-05
对编程语言不够熟悉,也无法精确表述是什么问题。 或许我表述的问题,已经被研究讨论过了,很少存在需要这样考虑逻辑,无伤大雅;或许应经被java或其他语言解决了,我还不知道;或许大部分人都知道怎么更好的解决了。如是这样,请点隐藏或新手,走人或更好的做法是告诉我和其他不明事实真相的群众该怎么做。 大家有没有这样同感,当有几个独立的逻辑,交叉一起判断的时候,逻辑分支的编写会变得很冗余。 不标准的伪代码,a、b、c在那些数字的取值范围内(就考虑0,1,2吧): int a in(0,1,2...); int b in(0,1,2...); int c in(0,1,2...); 写逻辑的时候你会这样写: if(a==0){ if(b==0){ if(c=0=){ ... }else if(c==1){ ... }else{ ... } }else if(b==1){ if(c==0){ ... }else if(c==1){ ... }else{ ... } }else{ if(c==0){ ... }else if(c==1){ ... }else{ ... } } }else if(a==1){ if(b==0){ if(c==0){ ... }else if(c==1){ ... }else{ ... } }... ... }else{ ... ... } 或者 if(a==0&&b==0&&c==0){ ... }else if(a==0&&b==0&&c==1){ ... }else if(a==0&&b==0&&c==2){ ... }else if(a==0&&b==1&&c==0){ ... }else if(a==0&&b==1&&c==1){ ... }else if(a==0&&b==1&&c==2){ ... }... ... 抛石子引玉: 定义这样几个布尔数组,保证有且仅有一个是true,对它们迭代(或者是什么): int a in(0,1,2...); int b in(0,1,2...); int c in(0,1,2...); boolean baa={a==0,a==1,a==2}; boolean bab={b==0,b==1,b==2}; boolean bac={c==0,c==1,c==2}; 有那么一种强大的itr迭代(迭代数组,却没有共同的循环结构,只是实现分支,或叫分支更合适),有我幻想的结构。 itr(baa,bab,bac){ ...; //if(baa[0]&&bab[0]&&bac[0]) ...; //if(baa[0]&&bab[0]&&bac[1]) ...; //if(baa[0]&&bab[0]&&bac[2]) ...; //if(baa[0]&&bab[1]&&bac[0]) ...; //if(baa[0]&&bab[1]&&bac[1]) ...; //if(baa[0]&&bab[1]&&bac[2]) ... ... } 迭代达到注释中判断的效果,“...;”可以是个处理语句,或者一个“{}”包裹起来的语句块。 这么做是不是更简洁?虽然可能写着写着漏掉或弄混逻辑。 独立的逻辑还好想,稍微有点交叉的逻辑限于自己的启蒙程度还无法想象。 -----------------------------------我从来不掩饰自己的无知 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-16
最后修改:2010-03-16
enum结构....
可以作到这种事 |
|
返回顶楼 | |
发表时间:2010-03-16
抛出异常的爱 写道 enum结构....
可以作到这种事 哦,对enum不太了解,我去看看 |
|
返回顶楼 | |