もし条件があれば、代替またはエレガントな書き方があるのではないかと思っていました。
確認する必要がある条件は以上です。
例、
if(cond1){
if(cond2){
if(cond3){
if(cond4){
//all conditions are checked
flag = true;
}
}
}
}
もし条件があれば、代替またはエレガントな書き方があるのではないかと思っていました。
確認する必要がある条件は以上です。
例、
if(cond1){
if(cond2){
if(cond3){
if(cond4){
//all conditions are checked
flag = true;
}
}
}
}
はい、論理 AND 演算子を使用できます。
if(cond1 && cond2 && cond3 && cond4) {
flag = true;
}
cond1
が false の場合、残りの条件は評価されないなどの点で同等です。
この場合、値を直接割り当てるだけでさらに簡単になる場合があります(パトリックの元の回答に触発されました):
flag = cond1 && cond2 && cond3 && cond4;
短く読みやすくエレガントな方法は次のとおりです。
flag = cond1 && cond2 && cond3 && cond4 ? true : false;
または pstanton が言うように:
boolean flag = cond1 && cond2 && cond3 && cond4;
少ないほど多い場合、これは最もエレガントです。
boolean flag = cond1 && cond2 && cond3 && cond4;
ZongLi が示すように、これを AND のセットに減らすのは簡単ですが、複雑なロジックがある場合、これはより複雑になります。
if(cond1){
if(cond2){
if(cond3){
if(cond4){
//all conditions are checked
flag = true;
}
}
if(cond4){
flag3 = true;
}
}
else
flag2 = true;
}
これを減らすのがそれほど簡単ではない状況があります
flag1 = cond1 && cond2 && cond3 && cond4
flag2 = cond1 && cond2 && cond4
flag2 = cond1 && !cond2
ただし、これらをブール式に減らすと、変数間のセマンティックな関係が失われるため、読みにくく保守しにくくなることがよくあります。上記の例は、次のように書き直すことができます。
if(cond1){
if(cond2){
if(cond4){
flag3 = true;
if(cond3){
flag = true;
}
}
}
else
flag2 = true;
}
また
if(cond1 && cond2){
if(cond4){
flag3 = true;
if(cond3){
flag = true;
}
}
}
else if(cond1){ flag2 = true; }
それはあなたのコードのセマンティクスに依存するでしょうが、多くの入れ子は、ブール式を使用するか、条件ツリーを再構築する方が良いかもしれないことを示唆しています。
ここでブール値の論理的等価性を覚えておくと便利です。特に、IF x THEN y
論理的に等価である!X or Y