Modifier

Je réponds ici au blog du support technique car les commentaires passent mal (mais je ne critique pas, chez moi, les commentaires sont encore pire !)

Le post d'origine

Ma réponse

Ces syntaxes sont très pratiques et je les utilises régulièrement dans mon code.

Mais il faut tout de même faire attention avec ces deux syntaxes.

Cas du tableau

Dans le cas du tableau, l'affectation multiple ne redimensionne pas le tableau s'il est plus petit (j'ai vu passer cette info sur twitter récemment) :

Puissance2 est un tableau de 0 entiers
Puissance2 = [1, 2, 4, 8, 16, 32, 64, 128, 256]
Trace(TableauVersChaîne(Puissance2, ",")) // Affiche 1,2,4,8,16,32,64,128,256
Puissance2 = [1, 2, 4, 8, 16, 32]
Trace(TableauVersChaîne(Puissance2, ",")) // Affiche 1,2,4,8,16,32,0,0,0

Cas de la structure

Dans le cas de la structure, plusieurs dangers :

  • si on supprime un attribut (z par exemple), le compilateur ne signale pas les changements.
  • si on change l'ordre des attributs, on casse tout

Et enfin, dans le cas d'une classe, je le déconseille vivement pour plusieurs raisons :

  • on ne peut pas l'utiliser sur une instance de classe dynamique (ma_variable est une cClasse dynamique)
  • on initialise directement les attributs, qu'ils soient publics ou privés. L'encapsulation en prend un sacré coup.

Tableau associatif

Enfin, on peut aussi l'utiliser pour les tableaux associatifs (j'adore cette syntaxe !)

mon_tableau est un tableau associatif de chaîne = [["clé1", "valeur 1"], ["clé2", "valeur 2"]]
POUR TOUT valeur, clé de mon_tableau
    Trace(clé, valeur)
FIN

Tableau de structure

Et on peut aussi l'utiliser pour un tableau de structure :

point3D est une Structure
x est un entier
y est un entier
z est un entier
FIN

tableau_de_points est un tableau de point3D = [...
[0, 0, 0],...
[0, 0, 1],...
[0, 1, 1]]

POUR TOUT point DE tableau_de_points
    Trace(point.x, point.y, point.z)
FIN

Tableau associatif de structure

Voire un tableau associatif de structure :

point3D est une Structure
x est un entier
y est un entier
z est un entier
FIN

tableau_de_points est un tableau associatif de point3D = [...
["Point 1", [0, 0, 0]],...
["Point 2", [0, 1, 0]],...
["Point 3", [1, 0, 0]]]

POUR TOUT point, clé de tableau_de_points
    Trace(clé +" :" + point.x, point.y, point.z)
FIN

Poursuivre la discussion sur le forum

Article précédent Article suivant