Ответы:
Он называется условным оператором (который является троичным оператором ).
Она имеет вид: condition
? value-if-true
: value-if-false
Подумайте о ?
качестве «тогда» и :
как «другие».
Ваш код эквивалентен
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
addition
Это, вероятно, немного понятнее, когда в скобках написано следующее:
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 оценивается как true, хотя -1! = True и -1! = False. Поверь мне, я видел, как это случилось.
так
-1? «истинная сторона»: «ложная сторона»
оценивает "истинную сторону"
Infinity
(вызванной делением на ноль).