Jawaban:
Ini disebut Operator Bersyarat (yang merupakan operator ternary ).
Ini memiliki bentuk condition
:? value-if-true
: value-if-false
Pikirkan ?
sebagai "lalu" dan :
sebagai "lain".
Kode Anda setara dengan
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
addition
operator biner yang beroperasi pada ekspresi sebelum dan sesudahnya (mis. 1 + 2 plus beroperasi pada 1 dan 2), atau negasi adalah operator unary (mis. -X di mana nilai x dinegasikan).
Ini mungkin sedikit lebih jelas ketika ditulis dengan tanda kurung sebagai berikut:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
Apa yang dilakukannya adalah mengevaluasi bagian dalam tanda kurung pertama. Jika hasilnya benar maka bagian setelah? dan sebelum: dikembalikan. Jika salah, maka yang berikut: dikembalikan.
? :
bukankah ini operator ternary?
var x= expression ? true:false
?: Apakah kondisi singkat untuk else {}
dan if(){}
masalah. Jadi kode Anda dapat dipertukarkan dengan ini:
if(max != 0){
hsb.s = 225 * delta / max
}
else {
hsb.s = 0
}
Hati-hati dengan ini. A -1 mengevaluasi true meskipun -1! = Benar dan -1! = Salah. Percayalah, saya sudah melihatnya terjadi.
begitu
-1? "true side": "false side"
mengevaluasi ke "sisi sebenarnya"
Infinity
(disebabkan oleh divide-by-zero).