NewMap

Instruction

Syntaxe

Déclare une map : des valeurs rangées sous des clés texte. <name>(<key>) lit ou écrit une entrée, <name>() l'entrée courante.

NewMap <name>.<type>([<slots>])
NewMap <name>([<slots>])
GLOBAL NewMap <name>.<type>([<slots>])
LOCAL NewMap <name>.<type>([<slots>])
<name>(<key>)
<name>()
<name>(<key>).<field>

Les éléments

<name>Le nom de la map, sans sigil. Il ne peut pas être aussi le nom d'une liste.
<type>Le type des valeurs, comme pour NewList : un suffixe court, un nom de type complet, ou un nom de TYPE. Sans type, la map contient des entiers.
<slots>Indication de taille facultative, gardée pour les programmes PureBasic. Ce doit être un entier positif (0 ou moins arrête le programme) ; elle ne change rien d'autre.
<key>La clé, en texte. Un nombre est converti en texte : m(1) et m("1") sont la même entrée. Les clés tiennent compte de la casse.
<field>Un champ de l'entrée, pour une map d'enregistrements : bag("sword").qty = 1.

À savoir

  • m("key") = v crée l'entrée ou remplace sa valeur. +=, -=, *= et /= marchent sur une entrée.
  • Lire m("key") crée l'entrée manquante avec la valeur par défaut. Pour tester sans créer, utilisez FindMapElement().
  • Chaque accès fait de cette entrée l'entrée courante. Sans entrée courante, lire m() arrête le programme : BASIC map has no current element.
  • NewMap m$() est refusé dès le premier usage de m(). Écrivez le type après un point : NewMap m.s().
  • Dans un programme avec DO … LOOP, une FUNCTION ne voit pas une map déclarée au-dessus de DO (… is not defined). Déclarez-la avec GLOBAL NewMap.

Exemple

NewMap stock.i()stock("apple") = 3stock("pear") = 5stock("apple") += 2Console(Str(stock("apple")) + " " + Str(MapSize(stock())))   ' 5 2IF FindMapElement(stock(), "plum") = 0 THEN Console("no plum")   ' no plumConsole(Str(stock("plum")) + " " + Str(MapSize(stock())))   ' 0 3
Dans le manuel : Tableaux, listes et maps