Відповіді:
Його називають умовним оператором (який є потрійним оператором ).
Вона має вигляд: condition
? value-if-true
: value-if-false
Подумайте ?
як про "тоді" і :
як про "інше".
Ваш код еквівалентний
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
addition
і двійковий оператор, який працює над попередніми та наступними виразами (наприклад, 1 + 2 плюс діє на 1 і 2), або заперечення є одинарним оператором (наприклад, -x де значення x заперечується).
Це, мабуть, трохи зрозуміліше, якщо писати дужками так:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
Що це робиться - це оцінити частину в перших дужках. Якщо результат вірний, то частина після? і до: повертається. Якщо вона помилкова, то повертається те, що слідує за цим:
? :
це не потрійний оператор?
var x= expression ? true:false
?: - це умова короткої руки else {}
та if(){}
проблеми. Тож ваш код на це взаємозамінний:
if(max != 0){
hsb.s = 225 * delta / max
}
else {
hsb.s = 0
}
Будьте обережні з цим. А -1 оцінюється як істинне, хоча -1! = Істинно і -1! = Хибно. Повірте, я бачив, як це відбувається.
так
-1? "справжня сторона": "хибна сторона"
оцінює "справжню сторону"
Infinity
(спричинено діленням на нуль).