Question

Veuillez montrer comment l’opérateur ternaire fonctionne avec un bloc if / else régulier. Exemple:

Boolean isValueBig = value > 100 ? true : false;

Copie exacte: Comment utiliser le Opérateur ternaire?

Était-ce utile?

La solution

Boolean isValueBig = ( value > 100  ) ? true : false;


Boolean isValueBig;

if(  value > 100 ) { 
      isValueBig = true;
} else { 
     isValueBig = false;
}

Autres conseils

La différence entre l'opération ternaire et si / else est que l'expression ternaire est une instruction qui donne une valeur, alors que si / else ne l'est pas.

Pour utiliser votre exemple, passez d'une expression ternaire à if / else si vous pouviez utiliser cette instruction:

Boolean isValueBig = null;
if(value > 100)
{ 
    isValueBig = true 
}
else
{
    isValueBig = false;
}

Dans ce cas, votre déclaration équivaut à ceci:

Boolean isValueBig = (value > 100);

Quand j'étais nouveau sur C ++, j'ai découvert qu'il était utile de lire cette construction comme suit:

Boolean isValueBig = if condition ? then x else: y;

(Notez que ce n'est pas un code valide. C'est juste ce que je me suis entraîné à lire dans ma tête.)

Boolean isValueBig;

if (value > 100)
{
   isValueBig = true;
}
else 
{
   isValueBig = false;
}
Boolean isValueBig;

if(value > 100) { isValueBig = true; } else { isValueBig = false; }

Je n’ai jamais été fan de l’opérateur ternaire car j’ai pensé que c’était difficile à lire. Il se trouve que Jon Skeet et son livre, C # in Depth ont finalement frappé ce vieux chien par-dessus la tête et l'ont fait sombrer. Jon a dit, et je paraphrase, réfléchissez-y comme une question.

  

valeur > 100?

     

" yes " : "non"

Maintenant, les aveugles peuvent voir.

J'espère que cela vous aide à en faire une seconde nature.

Comme indiqué dans la ?: La page MSDN de l'opérateur , "l'opérateur conditionnel (? :) renvoie l'une des deux valeurs en fonction de la valeur d'une expression booléenne."

Vous pouvez donc utiliser l'opérateur ternaire pour renvoyer plus que des booléens:

   string result = (value > 100 ) ? "value is big" : "value is small";

Exemple PHP

<?php

  // Example usage for: Ternary Operator
  $action = (empty(

Exemple PHP

<*>
  

" L'expression (expr1)? (expr2): (expr3) est évalué à expr2 si expr1 est évalué à VRAI et à expr3 si expr1 est évalué à FALSE . "

Documentation PHP sur les opérateurs de comparaison

POST['action'])) ? 'default' :

Exemple PHP

<*>
  

" L'expression (expr1)? (expr2): (expr3) est évalué à expr2 si expr1 est évalué à VRAI et à expr3 si expr1 est évalué à FALSE . "

Documentation PHP sur les opérateurs de comparaison

POST['action']; // The above is identical to this if/else statement if (empty(

Exemple PHP

<*>
  

" L'expression (expr1)? (expr2): (expr3) est évalué à expr2 si expr1 est évalué à VRAI et à expr3 si expr1 est évalué à FALSE . "

Documentation PHP sur les opérateurs de comparaison

POST['action'])) { $action = 'default'; } else { $action =

Exemple PHP

<*>
  

" L'expression (expr1)? (expr2): (expr3) est évalué à expr2 si expr1 est évalué à VRAI et à expr3 si expr1 est évalué à FALSE . "

Documentation PHP sur les opérateurs de comparaison

POST['action']; } ?>
  

" L'expression (expr1)? (expr2): (expr3) est évalué à expr2 si expr1 est évalué à VRAI et à expr3 si expr1 est évalué à FALSE . "

Documentation PHP sur les opérateurs de comparaison

Assurez-vous de ne pas mélanger les types dans les parties true / false en Java. Il produit des résultats étranges: - (

Mauvais exemple car vous pourriez facilement écrire

Boolean isValueBig = value > 100 ? true : false;

en tant que:

bool isValueBig = value > 100

Au-delà, tout le monde a déjà répondu à la question. Je ne recommanderais tout simplement pas d’utiliser des opérateurs ternaires pour définir des valeurs bool, car ce que vous évaluez est déjà une valeur booléenne.

Je réalise que ce n'était qu'un exemple, mais cela valait la peine d'être signalé.

D'autres y ont déjà répondu, mais il y a une chose que vous devez savoir à propos de l'utilisation de Ternary et par là, je veux dire, ne le faites jamais.

Supposons que vous ayez un morceau de code censé renvoyer un objet différent pour chaque variation possible d'une valeur, disons, pour simpliticy, un entier compris entre 1 et 5. Votre code ressemble à ceci:

if(i==1) {
    return new ObjectOne();
} else if(i==2) {
    return new ObjectTwo();
} else if(i==3) {
    return new ObjectThree();
} else if(i==4) {
    return new ObjectFour();
} else if(i==5) {
    return new ObjectFive();
} else {
    return new DefaultObject();
}

C'est facile à comprendre mais un peu lourd. Puisque ternary est juste une autre façon d’écrire une déclaration if..else qui peut être refactorisée à cette

return (i==1) ? new ObjectOne() :
       (i==2) ? new ObjectTwo() :
       (i==3) ? new ObjectThree() :
       (i==4) ? new ObjectFour() :
       (i==5) ? new ObjectFive() : new DefaultObject();

Il s’appelle ternaire imbriqué . C'est mal, maintenant que vous savez à ce sujet, ne l'utilisez jamais. Il peut sembler que ses utilisations ressemblent au cas ci-dessus, mais il est très probable que dans des situations réelles, vous devriez l’utiliser quelque part où il perd sa lisibilité (pensez à modifier les configurations avec une quantité variable de paramètres, etc.).

Secteur boni: ne définissez jamais de valeur d'attribut à l'intérieur de if (), regardez simplement ceci: if (bool = true! = false) {..}

Cité dans MSDN (mentionné dans un précédent article)

string result = (value > 100)? "La valeur est grande" : "la valeur est petite"

Peut être lu comme suit:

La valeur est-elle supérieure à 100? Si oui, le résultat de la chaîne est "La valeur est grande", si non, le résultat de la chaîne est "La valeur est petite".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top