Ensembles
Les ensembles permettent de définir une collection de valeurs ordinales, non ordonnée, ne pouvant apparaître qu'une seule fois dans la collection.
Déclaration
Les types ensembles sont appliqués à un type énuméré:
TMonEnsemble = set of TMonEnumere;
Si par exemple TMonEnumere est defini comme suit:
TMonEnumere = (meRouge, meVert, meBleu);
Alors les seules valeurs possibles pour une variable de type TMonEnsemble sont:
- ensemble vide: []
- ensembles de un élément: [meRouge], [meVert] ou [meBleu]
- ensembles de deux éléments: [meRouge, meVert], [meRouge, meBleu] ou [meVert, meBleu]
- ensemble de trois éléments: [meRouge, meVert, meBleu]
Aucune autre valeur ne pourra être prise.
Manipulation des ensemble
Les variables et champs de type ensemble peuvent être manipulé avec les fonctions & pseudo-méthodes Include et Exclude.
- Include ajoute un élément à un ensemble, et ne fait rien s'il est présent.
- Exclude retire un élément d'un ensemble, et ne fait rien s'il est absent.
Include(e, meRouge); // e vaut maintenant [meRouge]
e.Include(meVert); // e vaut maintenant [meRouge, meVert]
Include(e, meRouge); // meRouge déjà present, e vaut toujours [meRouge, meVert]
Exclude(e, meRouge); // e vaut maintenant [meVert]
e.Exclude(meVert); // e est désormais vide
e.Exclude(meBleu); // sans effet car meBleu n'est pas présent
Opérateurs
L'opérateur in et sa négation not in permettent de tester la présence d'un valeur au sein d'un ensemble.
if meBleu in e then
PrintLn("meBleu est dans e");
if meRouge not in e then
PrintLn("meRouge n'est pas dans e");
Les opérateurs arithmétiques suivants sont supportés (Qubes 7.2):
- + indique une union ensembliste
- - dénote une soustraction ensembliste
- * permet de spécifier une intersection ensembliste
Les opérateurs de comparaison supportés sont (Qubes 7.2):
- = pour l'égalité
- <> pour la différence
- >= sera vrai si l'ensemble de gauche contient celui de droite
- <= sera vrai si l'ensemble de droite contient celui de gauche
Itération
Il est possible d'utiliser for in pour itérer sur tous les éléments d'un ensemble:
for var i in e do
PrinLn(i.Name);
imprimera
meRouge meBleu