当前,我在if (roobaf)
块中有一些代码,这取决于foo
和bar
为假。我可以在块中再次检查这些条件,但是感觉像是不必要的代码重复。
if (foo) {
// some code
}
/*else*/ if (bar) { // bar is a condition which needs to be checked
// whether 'foo' is true or false
// more code
}
if (roobaf) {
if (!foo && !bar) {
// even more code
}
}
问题在于,如果bar
只是if
,那么即使foo为true,也将到达roobaf
。
如果我将bar
更改为else if
,则如果foo
为true,则不会检查bar
。
如何确保始终选中foo
和bar
,但是只有同时选中roobaf
和foo
时才选中bar
?
roobaf
是不能与foo
和bar
互斥的条件,因此将其放在首位将不起作用。
答案 0 :(得分:6)
您可以执行以下操作:
if (foo || bar) {
if (foo) {
// do something
}
if (bar) {
// do something
}
}
else {
if (roobaf) {
// do something else
}
}
答案 1 :(得分:1)
我可以看到nLee的解决方案可能是最好的解决方法,但是您似乎不愿意再次输入foo
或bar
,因此您始终可以在内部将条件设置为false的身体作为替代。
注意:我个人认为这不是使if
语句嵌套更少的好方法。
roobaf = true; //Initial Condition
if (foo){
//Other code
roobaf = false;
}
if (bar){
//Other code
roobaf = false;
}
if (roobaf) {
//Other code
}