Je suis tombé sur la ligne suivante
hsb.s = max != 0 ? 255 * delta / max : 0;
Que signifient les ?
et :
dans ce contexte ?
Je suis tombé sur la ligne suivante
hsb.s = max != 0 ? 255 * delta / max : 0;
Que signifient les ?
et :
dans ce contexte ?
Il est appelé l'Opérateur conditionnel (qui est un opérateur ternaire).
Il a la forme suivante: condition
? valeur-si-vrai
: valeur-si-faux
Pensez au ?
comme "alors" et :
comme "sinon".
Votre code est équivalent à
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
"? n'est pas l'opérateur ternaire; "? :" est l'opérateur ternaire. Parler de "?" comme l'opérateur ternaire, c'est comme parler de Abbott sans Costello, Laurel sans Hardy, Cheech sans Chong...."
Pour être pointilleux, c'est un opérateur ternaire, qui se trouve être le seul dans la plupart des langages de programmation. Tout opérateur qui fonctionne sur 3 parties est un opérateur ternaire, tout comme l'addition
est un opérateur binaire qui opère sur les expressions précédentes et suivantes (par exemple 1+2, le plus opère sur 1 et 2), ou la négation est un opérateur unaire (par exemple -x où la valeur de x est négative).
Ceci est probablement un peu plus clair lorsqu'il est écrit avec des crochets comme suit :
hsb.s = (max != 0) ? (255 * delta / max) : 0;
Ce qu'il fait est d'évaluer la partie entre les premiers crochets. Si le résultat est vrai, alors la partie après le ? et avant le : est retournée. Si c'est faux, alors ce qui suit le : est retourné.
Voici un exemple de son utilisation, mais il existe en réalité une version plus courte de votre déclaration, pour les cas où vous voulez simplement VRAI / FAUX: Si 'expression' était juste une variable avec un nombre ou une chaîne de caractères dedans, "var x = !!expression" le transformera en un résultat booléen.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.