Enchaîné, ça me va - imbriqué, pas vraiment.
J'ai tendance à les utiliser davantage en C, simplement parce qu'ils sont une si qui a de la valeur, ce qui permet de réduire les répétitions ou les variables inutiles :
x = (y < 100) ? "dog" :
(y < 150) ? "cat" :
(y < 300) ? "bar" : "baz";
plutôt que
if (y < 100) { x = "dog"; }
else if (y < 150) { x = "cat"; }
else if (y < 300) { x = "bar"; }
else { x = "baz"; }
Dans ce genre de mission, je trouve qu'il y a moins à remanier et que c'est plus clair.
D'autre part, lorsque je travaille en ruby, je suis plus susceptible d'utiliser if...else...end
parce que c'est aussi une expression.
x = if (y < 100) then "dog"
elif (y < 150) then "cat"
elif (y < 300) then "bar"
else "baz"
end
(Même si, il faut bien l'admettre, pour quelque chose d'aussi simple, je pourrais de toute façon utiliser l'opérateur ternaire).
9 votes
Utilisez-le quand c'est clair, évitez-le quand c'est confus. C'est une question de jugement. Il peut rendre le code plus lisible, mais seulement pour les expressions simples. Essayer de toujours L'utiliser est tout aussi menaçant que de l'éviter sans relâche.
4 votes
En fait, c'est l'opérateur conditionnel. Une question proche de la duplication est stackoverflow.com/questions/725973/ .
0 votes
J'utilisais parfois
x = x if x else y
mais il s'est ensuite renseigné et a réalisé, avec l'aide d'autres personnes, que cela se résumait à x = x ou y ( stackoverflow.com/questions/18199381/self-referencing-ternary/ )0 votes
L'opérateur ternaire peut être utilisé dans les cas où l'option si..sinon La construction ne peut pas, par exemple dans les déclarations de retour et comme arguments de fonction. La même chose pourrait être réalisée sans l'utilisation du ternaire, mais cela entraîne un code plus long et des exécutables plus volumineux.