NewList

Instruction

Syntaxe

Déclare une liste : des valeurs rangées dans l'ordre, avec un élément courant. <name>() lit ou écrit cet élément.

NewList <name>.<type>()
NewList <name>()
GLOBAL NewList <name>.<type>()
LOCAL NewList <name>.<type>()
<name>()
<name>().<field>

Les éléments

<name>Le nom de la liste, sans sigil. Il ne peut pas être aussi le nom d'une map.
<type>Le type des éléments : un suffixe court (.i, .f, .d, .s, .q…), un nom complet (.integer, .string, .float64), ou un nom de TYPE. Sans type, la liste contient des entiers.
<field>Un champ de l'élément courant, pour une liste d'enregistrements : foes().hp = 30.

À savoir

  • Une liste neuve est vide et n'a pas d'élément courant. Lire ou affecter <name>() arrête alors le programme : BASIC list has no current element. Ajoutez d'abord un élément avec AddElement().
  • Les valeurs sont converties dans le type de la liste : une liste d'entiers range 20.9 comme 20, et .f est sur 32 bits (0.1 se relit 0.10000000149011612). Prenez .d pour la pleine précision.
  • NewList names$() est refusé dès le premier usage de names(). Écrivez le type après un point : NewList names.s().
  • += sur l'élément courant et INC l() compilent en un programme qui ne démarre pas. Écrivez l() = l() + 5.
  • Un nouveau NewList sur le même nom crée une liste neuve et vide. Un NewList dans une FUNCTION appartient à cet appel.
  • Dans un programme avec DO … LOOP, une FUNCTION ne voit pas une liste déclarée au-dessus de DO (… is not defined). Déclarez-la avec GLOBAL NewList.

Exemple

NewList scores.i()AddElement(scores())scores() = 10AddElement(scores())scores() = 30FirstElement(scores())AddElement(scores())scores() = 20.9FOREACH scores()  Console(Str(ListIndex(scores())) + ": " + Str(scores()))   ' 0: 10, then 1: 20, then 2: 30NEXTConsole(Str(ListSize(scores())))   ' 3
Dans le manuel : Tableaux, listes et maps