Odpowiedzi:
Nazywa się to Operatorem Warunkowym (który jest operatorem potrójnym ).
Ma postać condition
:? value-if-true
: value-if-false
Pomyśl o tym ?
jako „wtedy” i :
jako „innym”.
Twój kod jest równoważny z
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
addition
operator binarny, który działa na poprzedzających i następujących wyrażeniach (np. 1 + 2 plus działa na 1 i 2), lub negacja jest operatorem jednoargumentowym (np. -X gdzie wartość x jest zanegowana).
Jest to prawdopodobnie nieco jaśniejsze, gdy zapisuje się w nawiasach w następujący sposób:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
Dokonuje oceny części w pierwszych nawiasach. Jeśli wynik jest prawdziwy, to część po? i zanim: zostanie zwrócony. Jeśli jest to fałsz, zwracane jest to, co następuje:.
? :
czy to nie jest trójskładnikowy operator?
var x= expression ? true:false
?: jest warunkiem krótkiej ręki else {}
i if(){}
problemami. Twój kod jest więc wymienny:
if(max != 0){
hsb.s = 225 * delta / max
}
else {
hsb.s = 0
}
Uważaj na to. A -1 ma wartość prawda, chociaż -1! = Prawda, a -1! = Fałsz. Zaufaj mi, widziałem, jak to się dzieje.
więc
-1? „true side”: „false side”
ocenia na „prawdziwą stronę”
Infinity
(spowodowane dzieleniem przez zero).