条件演算子? :
がif-else
の短縮形であり、ように動作する:
if (x1 - x2 >= 0)
xDistance = x1 - x2;
else
xDistance = x2 - x1;
:
(condition) ? (return this if condition true) : (return this if condition false)
したがって
double xDistance = x1 - x2 >= 0 ? x1 - x2 : x2 - x1;
はに等しいです
二行目:
絶対値(すなわちを記憶している
if (y1 - y2 >= 0)
yDistance = y1 - y2;
else
yDistance = y2 - y1;
:
double yDistance = y1 - y2 >= 0 ? y1 - y2 : y2 - y1;
は同じことであるが、に相当します。距離ではなく距離)をxDistance
とyDistance
に設定します。 Math.abs(x1 - x2)
などと置き換えることもできます。
なぜ、&&
演算子を次のように置き換えますか?
if (xDistance <= (w1 + w2)/2)
if (yDistance <= (h1 + h2)/2)
// do something
EDIT:コメントでDavidで述べたように、&&
(xDistance <= (w1 + w2)/2 && yDistance <= (h1 + h2)/2)
あなたが本当にしなければならなかった場合は、持っている可能性があり(この文を想定しはif
声明に属します)単に論理とANDです。すなわち、 X && Y
の場合、X
がTRUEで、Y
がTRUEの場合、TRUEになります。
このため、あなたはを活用することができ短絡最初の条件(X
)がFALSEであれば、2番目の評価プログラムにはポイントがありませんを、(Y
)式がTRUEになることはありませんので、 。
"&&演算子を置き換える理由は何ですか?" '&&'演算子は論理和と論理和です。ブール論理を理解していると、(xDistance <=((w1 + w2)/ 2)) '_and_'(yDistance <=((h1 + h2)/ 2))'は、結果は真実です。どちらかがfalseの場合、文全体がfalseとみなされます。おそらく '&& 'の代わりに' &&'の使用について知っておくべき重要なことは、 '&&' "short-circuits"です。つまり、最初の文が偽であれば、2番目の文はまったく評価されません。 –
@ DavidBrainer-Bankerええ、それは良い説明です。 – AusCBloke
このような迅速な返信をいただき、ありがとうございました。 – Calsolum