0

如果执行了任何一堆代码,我想运行代码if + else if + else if...

if(){
    ...
}else if(){
    ...
}else if(){
    ...
}
//run something if ANY of the above was executed

if我可以在每个or上添加我想要执行的行else if,但这将是太多垃圾邮件。

我所做的如下:

temp=i;//store a copy
i=-1;//make the change

if(){
    ...
}else if(){
    ...
}else if(){
    ...
}else{
    i=temp//restore if none was executed
}

以上将应用更改而不考虑任何内容,并使用else. 这工作正常,但我真的很担心这段代码的可读性

我还缺少其他更具可读性的替代方案吗?

4

2 回答 2

1

好吧,你总是可以做

any=true;
if (...) {
} else if (...) {
} else if (...) {
} else {
  any = false;
  // or: return, if you are inside a function!
}
if (any) {
  // one of the ifs was executed.
}

如果你使用函数来包装这个,你也可以只return在最后的else中。这可能是最干净的版本。

于 2012-04-12T22:24:02.777 回答
1

我不确定为什么需要两个变量。这个怎么样?

var conditionMet = true;

if(){
    ...
}else if(){
    ...
}else if(){
    ...
}else{
    conditionMet = false;
}

if(conditionMet){
    ...
}

我认为出于可读性目的,这里的主要内容是为变量找到一个非常好的名称,具体取决于它实际代表的内容。

于 2012-04-12T22:25:37.667 回答