Arma: Sensibilité à la casse

Dans le code, les majuscules et miniscules peuvent changer la signification. Les contenu des variables n’ont pas le même sens si la casse n’est pas respectée.

Le code d’Arma progressivement s’améliore, et il est recommandé à tous de respecter les majuscules/minuscules ce qui permet d’améliorer globalement la qualité du code, la relecture, et d’éviter les bugs débiles.

Quelques petites choses que Killzone Kid a trouvé bon de préciser à propos de la casse, il y a quelque temps.

   _variable = "_var";
    hint _VArIAblE; //shows "_var"

    variable = "var";
    hint VARIaBLE; //shows "var"
    
    with missionNamespace do {
        hint variaBLE; //shows "var"
    };

    hint (missionNamespace getVariable "VArIAbLe"); //shows "var"
    missionNamespace setVariable ["VARIABLE","VAR"];
    hint variable; //shows "VAR"

    _funCTION = {
        hint "func";
    };
    null = [] spawn _functioN; //shows "func"

    funCtioN = {
        hint "func";
    };
    call FUNCtiON; //shows "func"

Le nom des variables et des commandes standard Arma ne sont pas sensibles à la casse. Les commandes: HINT, HiNt et hint donneront le même résultat. Les éléments de config ne sont pas non plus sensibles.

_resultat = getText (configFile >> "cfgWeapons" >> "arifle_MXC_F" >> "displayname");
//_resultat est "MXC 6.5 mm" 

_resultat = GEetTeXT (coNfiGfile >> "CfgWEAPONs" >> "aRIFLE_mxc_f" >> "displayNAME");
//_resultat est "MXC 6.5 mm" 

Les structures de contrôle en fonction de comment elles sont écrites ne fonctionnent pas de la même façon.

a = "HELLO";
b = "hello";

_resultat = if (a == b) then {"true"} else {"false"};
//_result est "true"

_resultat = if (a != b) then [{"true"},{"false"}];
//result est "false"

Comparaison avec une casse sensible
Pour opérer une comparaison sensible à la casse, il faut utiliser la commande isEqualTo:

a = "HELLO";
b = "hello";

_resultat = if (a isEqualTo b) then {"true"} else {"false"};
//_result est "false"

Tiens également compte, que d’autres commandes courantes sont sensibles à la casse exemple avec in ou find.

a = "HELLO";
b = "hello";

_resultat = if (a in [b]) then {"true"} else {"false"};
//_resultat est "false"

_resultat = if !(a in [b]) then [{"true"},{"false"}];
//result est "true"

_resultat = if (([b] find a) >= 0) then {"true"} else {"false"};
//_result est "false"

_resultat = if (([b] find a) < 0) then [{"true"},{"false"}];
//result est "true"

Tu peux opérer les mêmes contrôles en utilisant un switch.

a = "HELLO";
b = "hello";
_resultat = switch a do {case b : {"true"}; default {"false"}};
//_result est "false"

b = "HELLO";
_resultat = switch a do {case b : {"true"}; default {"false"}};
//_resultat est "true"

Au cas ou tu utiliserais une casse sensible, et que tu ais besoin de tout forcer en une seule et unique casse, il y a deux commandes utilise: toUpper et toLower

a = "HeLlO";
a = toUpper a;
//a is now "HELLO"

a = toLower a;
//a est "hello"

_array = ["MARK","STEVE","HENRY"];

_firstName = "Steve";
_resultat = _firstName in _array;
//_resultat est false

_resultat = (toUpper _firstName) in _array;
//_resultat est true

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