Arma: Lazy conditions

L’une des premières choses à comprendre quand on commence à développer sous ARMA, est le fonctionnement des structures de controle. Les structures de contrôle évaluent une ou plusieurs conditions et retourne vrai ou faux . (voir wikipedia test logique sous wikipedia)

Simplement, on retrouve une évaluation logique sous cette forme:

if (_variableA && _variableB && _variableC) then {
    /* ton code */
};

Si _variableA, _variableB, _variableC sont vrai alors l’évaluation de l’ensemble dans () sera vrai et le code sera alors exécuté.

L’ensemble des variables doivent être donc vrai pour que l’évaluation soit vrai. Le moteur d’Arma évalue l’ensemble des conditions et ne s’arrête pas , même s’il rencontre une condition fausse.

Cela signifie qu’il est plus avantageux en terme de performance, d’utiliser plusieurs évaluations imbriquées qu’une seule et unique sur une seule ligne.

if (_variablea) then {
    if (_variableb) then {
        if (_variablec) then {
            //do something
        };
    };
};

Dans ce cas de figure, si le compilateur rencontre une condition fausse durant les évaluations, il ne poursuivra pas les évaluations suivantes.

Lazy conditions

Pour obtenir le même résultat que ci-dessus mais en une ligne, tu peux également utiliser les lazy conditions qui permet d’interrompre l’évaluation des conditions suivantes. Cela consiste à encadrer dès la deuxième condition, les conditions avec des {}.

if (condition1 || {condition2} || {condition3}) then {}; 

Condition 3 est évaluée si seulement condition 1 est fausse, puis si la condition 2 est fausse.

if (condition1 && {condition2} && {condition3}) then {}; 

condition 3 est évaluée si seulement condition 1 est vrai, puis si condition 2 est vrai.

resultat = "DISPLAY";
private _a = {
    resultat = "DISPLAY1";
    false;
};

private _b = {
    resultat = "DISPLAY2";
    true;
};

private _c = {
    resultat = "DISPLAY3";
    true;
};

if(call _a || _b || _c ) then {};
hintc format["%1", resultat];
// resultat = "DISPLAY2";

Quoi qu’il en soit, je te recommande de limiter le nombre et la complexité des conditions à évaluer dans ta structure de contrôle.

Exemple : évaluer 10 conditions dans un même if, ou même des conditions par exemple qui vont faire du comptage ou rechercher des éléments dans des tableaux vont forcement avoir un effet négatif sur les performances de ton programme.

Cet article a été initialement rédigé par Killzone Kid, corrigé par Code34

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s