Les containers

Nous avons vu, grâce aux listes, que l'on peut stocker plusieurs objets au sein d'un même objet. Cela peut nous permettre, en théorie de tout faire. Mais ça peut ne pas se révéler très pratique.

Mettons que je veuille faire un programme de gestion de banque. Il faut donc que pour chaque personne, je stocke son nom, son prénom, son âge, son adresse e-mail, etc. Je peux parfaitement le faire dans une liste, mais ça peut se révéler assez impertinent, par exemple s'il y a ne serait-ce qu'une dizaine d'informations dedans. En effet, il faudrait se souvenir de l'indice de chaque élément dans la liste : ce n'est pas pratique.

C'est pourquoi Neon dispose des containers. C'est une structure de données qui permet de stocker un tas d'informations, pas forcément rangées, mais qui permet surtout de leur donner un nom. Un container, c'est un peu comme une enveloppe.

On peut créer toutes sortes de containers, et tous types de containers différents. C'est pourquoi chaque container qui contient la même 'classe' d'informations aura le même nom.

Par exemple je veux faire un container dans lequel on peut stocker un nom, un âge, et une adresse e-mail. Je décide d'appeler les objets de ce type 'Personne'. Eh bien maintenant, rien de plus simple. Si je veux définir un objet de type Personne, j'écris :

Comme vous le voyez, il n'y a pas besoin de 'définir' le type pour qu'il existe. J'écris directement l'objet, et Neon comprend que l'objet est de type 'Personne' et qu'il contient un âge, une adresse e-mail et un nom.

Ainsi, à chaque fois que vous écrirez un container de type Personne, Neon connaîtra déjà le type et va vérifier que vous mettez bien tous les champs : age, nom et e_mail. Si ce n'est pas le cas, il vous réprimandera :

Cependant, l'ordre dans lequel vous écrivez les champs n'a pas d'importance, Neon remettra toujours les champs dans le même ordre que ceux du premier container de ce type ayant été lu par Neon.


La première fois qu'on écrit un container d'un certain type fait donc office de définition, et tous les autres containers du même type devront contenir les mêmes champs.

Ici, je définis des fractions, et comme vous pouvez le voir, Neon a remis les éléments de y dans le même ordre que ceux de x.


Maintenant, supposons que je vous donne x. C'est une fraction. Comment puis-je accéder à son numérateur ou son dénominateur ?

Et bien c'est là la véritable utilité des containers, il suffit d'utiliser l'opérateur >> :

Bien sûr, on met ce que l'on veut dans un champ de container, comme des listes, des fonctions, ou encore d'autres containers :

Ceci est le module de piles fourni dans les programmes d'exemples en téléchargeant Neon.