Antworten:
Es wird als bedingter Operator (der ein ternärer Operator ist ) bezeichnet.
Es hat die Form von : condition
? value-if-true
: value-if-false
Stellen Sie sich das ?
als "dann" und :
als "sonst" vor.
Ihr Code entspricht
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
addition
ein binärer Operator, der mit den vorhergehenden und folgenden Ausdrücken arbeitet (z. B. 1 + 2, das Plus mit 1 und 2), oder die Negation ist ein unärer Operator (z. B. -x) wobei der Wert von x negiert wird).
Dies ist wahrscheinlich etwas klarer, wenn in Klammern wie folgt geschrieben wird:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
Was es tut, ist das Teil in den ersten Klammern auszuwerten. Wenn das Ergebnis wahr ist, dann der Teil nach dem? und bevor das: zurückgegeben wird. Wenn es falsch ist, wird das Folgende zurückgegeben :.
? :
Ist das nicht der ternäre Operator?
var x= expression ? true:false
?: ist eine Kurzbedingung für else {}
und if(){}
Probleme. Ihr Code ist also austauschbar:
if(max != 0){
hsb.s = 225 * delta / max
}
else {
hsb.s = 0
}
Sei vorsichtig damit. A -1 ergibt true, obwohl -1! = True und -1! = False. Vertrau mir, ich habe es gesehen.
so
-1? "wahre Seite": "falsche Seite"
bewertet zu "wahrer Seite"
Infinity
(verursacht durch Teilen durch Null) zu setzen.