Gambas 3/Gambas3LeLangage/Les collections
Les collections
modifierJusqu'à maintenant, nous avions utilisé des types simples : des valeurs ayant un type.
Petite révolution : nous allons commencer à utiliser des objets !
Une collection est un objet et pour pouvoir utiliser un objet, il faut qu'il existe. Il faut donc créer une nouvelle instance de collection avec le mot New
.
Sans cela, l'objet n'existe pas et rien ne fonctionne !
Revenons à notre sujet :
Une collection et un conteneur, une liste d'éléments.
Chaque élément a une clé de type String et une valeur de type Variant. Le type Variant est un type qui peut contenir n'importe quel autre type. En gros, vous mettez la valeur que vous voulez !
Le code ci-dessous est une démonstration d'utilisation d'une liste générique.
' Gambas module file
Public Sub Main()
Dim colItem As Variant
Dim colItems As Collection
colItems = New Collection
' syntax
colItems.Add("some text", CStr(colItems.Count))
colItems.Add(True, CStr(colItems.Count))
colItems.Add(18, CStr(colItems.Count))
colItems.Add(200.45, CStr(colItems.Count))
colItems.Add(Now, "custom")
colItems.Remove("0")
For Each colItem In colItems
Print colItems.Key
Print colItem
Next
Print colItems.Count
colItems.Clear()
Print colItems.Count
colItems = Null
End
Il y a plus d'informations sur le wiki officiel ici et ici si nécessaire.
En particulier, la syntaxe pour saisir une collection en ligne améliore le code (voir ci-dessous) et les performances :
Dim colItems As Collection
' inline syntax:
colItems = [
"0": "some text",
"1": True,
"2": 18,
"3": 200.45,
"custom": Now
]
Au début de votre apprentissage, je vous conseille d'utiliser uniquement les collections. Si vous en ressentez le besoin, vous pouvez aussi utiliser les tableaux dynamiques.
Les tableaux dynamiques
modifierLorsque tous les objets stockés ont le même type et si vous n'avez pas besoin de clé pour identifier un élément, vous pouvez utiliser un tableau dynamique.
Le fonctionnement est légèrement différent car il n'y a pas de clé de type String mais il y a un index typé Integer. La tableau évoluant dynamiquement, un élément ne conservera PAS son index initial.
Vous pouvez consulter les informations sur le wiki officiel ici, ici et ici si nécessaire.
Autres structures de données
modifierIl existe d'autres structures de données. En cas de besoin, je vous invite à regarder la documentation du module gb.data. En guise d'exemple, les piles ou queues, le Radix tree, le Heap, l'AVL tree ont été portés sur Gambas.
Il faudra créer une collection personnalisée si votre programme nécessite des tris sur votre collection, des fonctions de recherche, etc.