NewMap
DescriptionNewMap nom.<type>([Slots])
NewMap permet de déclarer une nouvelle map, aussi connue sous le nom de table de hachage ou dictionnaire. Elle permet un accès rapide à un élément basé sur une clef. Chaque clef dans la map est unique, ce qui signifie qu'il n'est pas possible d'avoir deux éléments distincts avec la même clef. Il n'y a pas de limite sur le nombre d'élément que peut contenir une map. Une map peut être déclarée avec n'importe quel type basic ou structuré. Pour consulter toutes les commandes nécessaires à la manipulation des maps, voir la bibliothèque Map.
Quand une nouvelle clef est utilisée, un nouvel élément est automatiquement ajouté à la map même sans affectation. Si un autre élément avec la même clef était déjà présent dans la map, il sera remplacé par le nouveau. Une fois qu'un élément a été créé ou accédé, il devient l' élément courant de la map, et les accès à cet élément peuvent ensuite s'effectuer sans avoir à spécifier de clef. C'est très utile lors de l'utilisation d'une map structurée, car la recherche de l'élément ne sera plus nécéssaire pour accéder aux différents champs.
Les maps sont toujours locales par défaut, donc pour accéder à partir d'une procédure à une map définie dans le code source principal du programme, l'utilisation de Global ou Shared est requise. Il est également possible de passer une map en paramètre d'une procédure à l'aide du mot-clef Map.
Utilisez la commande Swap pour permuter rapidement un élément d'une map avec une variable, un élément d'un tableau ou un élément de la map.
Le paramètre optionnel 'Slots' défini le nombre de slots interne qui sera utilisé par la map pour effectuer le stockage des éléments. Plus il y a de slots en interne, plus l'accès à un élément sera rapide, mais plus la consommation mémoire sera importante. C'est un compromis dépendant du nombre d'éléments que la map contiendra au maximum et de la rapidité nécessaire à l'accès d'un élément. La valeur par défaut est 512. Ce paramètre n'a pas d'influence sur le nombre d'éléments que la map peut contenir.
Exemple: Map simple
NewMap Pays.s() Pays("DE") = "Allemagne" Pays("FR") = "France" Pays("UK") = "United Kingdom" Debug Pays("FR") ForEach Pays() Debug Pays() Next
Exemple: Map en paramètre d'une procédure
NewMap Pays.s() Pays("DE") = "Allemagne" Pays("FR") = "France" Pays("UK") = "United Kingdom" Procedure DebugMap(Map ParameterMap.s()) ParameterMap("US") = "United States" ForEach ParameterMap() Debug ParameterMap() Next EndProcedure DebugMap(Pays())
Exemple: Map structurée
Structure Voiture Poids.l Vitesse.l Prix.l EndStructure NewMap Voitures.Voiture() ; Ici, nous utilisons l'élément courant après l'insertion du nouvel élément ; Voitures("Ferrari F40")\Poids = 1000 Voitures()\Vitesse = 320 Voitures()\Prix = 500000 Voitures("Lamborghini Gallardo")\Poids = 1200 Voitures()\Vitesse = 340 Voitures()\Prix = 700000 ForEach Voitures() Debug "Nom de la Voiture: "+MapKey(Voitures()) Debug "Poids: "+Str(Voitures()\Poids) Next
Exemple: Élémént de Map créé sans affectation
NewMap IconeMap() IconeMap("1")=1 IconeMap("2")=2 Debug FindMapElement(IconeMap(),"3"); Affiche 0 car l'élément n'existe pas If IconeMap("3"):EndIf; PureBasic le crée sans affectation parce qu'une nouvelle clé a été détectée Debug FindMapElement(IconeMap(),"3"); Affiche le pointeur vers ce nouvel élément.