私は先日 "else-if"ステートメントの作成について考えていたし、その実行方法が各イベントを相互排他的に保証する理由についても考えていました。例えばelse-ifのように構造化するのはなぜですか?
:
if(condition A)
//condition
else if(condition B)
//will run if condition A is false and condition B is true
else if(condition C)
//will run if condition A is false and condition B is false and condition C is true
else if(condition D)
//will run if all the above conditions are false and condition D is true.
私はすべての「他」の文をチェックするために、条件Aが成立しない場合には、より多くの意味になるだろう、と思うだけではなく、どちらかBかCに該当する場合、停止します。
if(condition A)
//condition
else {
if(condition B)
//...
if(condition C)
//...
if(condition D)
//...
}
したがって、なぜ我々は他の-場合は定義しない私たちはやり方を:私の直感では、上記のコードはこれに相当する持っているより自然だろうと考えて? if-elseステートメントの不要な入れ子を回避することはできますか?私はそれがあいまいだと思って、それを私の2番目のコードスニペットと同等にするのが理にかなっています。
編集:混乱を解消するために、私はこれら2つのステートメントが必ずしも同等ではないことを完全に理解しています。私の質問は主に最初の文が常に2番目の文と同じではないようにelse-ifが定義されている理由を尋ねています。私はなぜそれがそうするのかを理解しようとしています。
編集2:私は最終的に私の質問の基本的な本質を理解すると思います。一般に、 "else"は上記のステートメントが偽であるかどうかをチェックし、そうであればステートメントを実行します。しかし、elifの場合、実行前に上記の文がすべて偽であるかどうかをチェックします。これは、徹底的ではなく、if-else自体の性質について尋ねるので、重複する質問とは異なります。
編集3:私はうまくいけば明確な新しい質問を開きました。hereが見つかりました。
ネスト化されたアプローチを使用することを誰も止めません。 – shmosel
条件B、C、およびDが互いに排他的でない場合、コードフラグメントの実行結果は異なります。 – DyZ
彼らはいつも同じではありません。 – Maroun