3 votes

Plusieurs IF avec un ELSE

Je voudrais envisager une amélioration de la syntaxe.

Comment je peux mieux écrire ça :

IF condition1 
    IF condition2
        { do something }
    ELSE 
        { message1 }
ELSE 
    { message1 }

Il y a deux instructions IF qui ne peuvent pas être réunies dans une seule instruction, mais les deux parties ELSE doivent contenir le même code (dans cet exemple, message1).

Comment peut-on mieux écrire ? Je ne voudrais pas avoir à écrire deux fois le même code (dans les parties ELSE).

TnX à l'avance !

Nemanja

6voto

Paul R Points 104036

La solution évidente consiste à combiner les deux conditions :

IF condition1 AND condition2
    { do something }
ELSE 
    { message1 }

Cependant, si les deux conditions ne peuvent pas être combinées pour une raison quelconque, et que vous utilisez un langage de type C qui possède une fonction break ou un mot-clé équivalent, alors vous pouvez faire quelque chose comme ceci :

DO
   IF condition1
      IF condition2
          { do something }
          BREAK
   { message1 }
WHILE FALSE

4voto

alestanis Points 11214

Qu'en est-il

IF condition1 AND condition2
    { do something }
ELSE 
    { message1 }

Si vous ne pouvez pas joindre les deux instructions, vous pouvez utiliser une sorte de GOTO (ps : c'est une mauvaise pratique).

IF condition1 
    IF condition2
        { do something }
    ELSE 
        GOTO ELSE_CODE
ELSE 
    :ELSE_CODE
    { message1 }

3voto

panda-34 Points 2094

Dans le cas où vous parlez d'un langage sans évaluation booléenne en circuit court, vous pourriez l'implémenter manuellement comme suit

flag = condition1 
IF flag
    flag = flag AND condition2
IF flag
    { do something }
ELSE 
    { message1 }

0voto

Kyle Mathias Points 1

J'ai cherché cette réponse et je me suis rendu compte qu'il suffit de réorganiser les déclarations.

Au lieu de 2 instructions IF avec un else comme ceci

{
     if(FirstCheck === true){
         //run function 1
     }
     if(SecondCheck === true){
         //run function 2
      }
}else{
    //run this else only when the first 2 IFs are false
    // run function 3        
     }
}

vous voulez faire un IF pour la raison pour laquelle vous voulez exécuter la fonction dans le else, et ensuite mettre un else pour ce IFs, qui exécute alors votre IFs original

if(orginalElse !== true){
    //run function 3
    //this is the orginal else you would want to run, just with a negative if statement
}else{
    if(FirstCheck === true){
        //run function 1
    }
    if(SecondCheck === true){
        //run function 2
    }
}

Prograide.com

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.

Powered by:

X