If/fr
LSL Portail Francophone | LSL Portail Anglophone | Fonctions | Évènements | Types | Operateurs | Constantes | Contrôle d'exécution | Bibliothèque | Tutoriels |
if ( condition ) branche
| |||||||||||||||||
if ( condition ) branche_vrai else branche_faux
| |||||||||||||||||
Spécification
L'évaluation des opérateurs en LSL n'est jamais court-circuitée. Ainsi :
Dans un language court-circuité, si le terme de gauche d'un ET logique (&&) vaut FALSE, le terme de droite n'est jamais testé. En effet, le test complet renverra toujours FALSE, quelle que soit la valeur du terme de droite. Comme LSL n'est pas court-circuité, les termes de gauche et de droite sont toujours testés à chaque fois. Le comportement d'une expression court-circuitée peut être simulée en LSL avec des if imbriqués : default { touch_start(integer nombre_total) { if (FALSE) { if (test()) { // On n'arrive jamais ici. } } } } | |||||||||||||||||
ExemplesInstruction if en ligne simple : if (a == 1) c = b; Bloc d'instructions if simple : if (a == 1) { // On fait quelque chose ici. } Bloc if/else complexe (une seule ligne de texte est dite dans cet exemple) if (a == "Loren") { llSay(0, "Lorem ipsum sic amet!"); } else if (a == "Scie") { llSay(0, "Si six cent scies scient six cent cyprès, six cent six scies scient six cent six cyprès."); } else { llSay(0, "Charabia ou français ?"); } Instruction if composée : if (a == 1 && b == c) { // La suite ici. } Instructions if imbriquées : if (a == 1) { if (b == c) { // La suite ici. } } Attention aux points-virgules mal placés. Ils peuvent provoquer des comportements étranges et ils ne se gêneront pas pour le faire. Par exemple, si vous placez un point-virgule entre une instruction if et un bloc de code, l'instruction if n'influencera plus l'exécution ou non du bloc de code. if (a == "Loren"); { llSay(0, "Lorem ipsum sic amet!"); } Ce code s'exécute dans l'ordre suivant :
Un autre problème est quand quelqu'un oublie d'utiliser les accolades : if (a == "Loren") llSay(0, "Lorem ipsum sic amet!"); llSay(0, "Je ne sais pas non plus ce que ça veut dire..."); La source de l'erreur est que l'indentation donne l'impression que les deux commandes llSay sont contrôlées par l'instruction if, alors que seule la première l'est. En fait, si |
If