SortStructuredList

Commande de liste

Syntaxe

Trie sur place une liste de records selon l'un de leurs champs.

SortStructuredList(<list>(), <field>, <options> [, <start>, <end>])

Les éléments

<list>Une liste de records déclarée avec NewList, écrite avec ses parenthèses vides : foes().
<field>Le nom du champ, en texte : "hp". La casse ne compte pas. Le champ d'un record imbriqué s'écrit avec un point : "pos.x". Le champ doit contenir un nombre ou un texte.
<options>Obligatoire. #AK_ORDER_LOW_TO_HIGH (0), #AK_ORDER_HIGH_TO_LOW (1), et #AK_ORDER_FOLD_CASE (2) pour ignorer la casse. On les additionne pour les combiner.
<start>Facultatif. La position du premier élément à trier, à partir de 0.
<end>Facultatif, obligatoire avec <start>. La position du dernier élément à trier, comprise.

À savoir

  • Ne renvoie rien : écrivez-le seul sur sa ligne.
  • Après le tri, il n'y a plus d'élément courant.
  • Un champ inconnu arrête le programme avec « Unknown BASIC structure field ». Un champ qui contient un record l'arrête avec « SortStructuredList requires a numeric or string value ».
  • Une liste de nombres ou de textes arrête le programme : utilisez SortList().
  • Sans <start> ni <end>, toute la liste est prise. Donner seulement <start> compile, mais arrête le programme avec « BASIC collection range requires start and end ». Une plage hors de la liste l'arrête avec « BASIC collection range is out of bounds ».
  • Pour qui vient de PureBasic : le champ se donne par son nom, en texte, et non par un décalage et un type.

Exemple

TYPE Foe  name AS string  hp AS integerENDTYPENewList foes.Foe()AddElement(foes())foes().name = "orc"foes().hp = 30AddElement(foes())foes().name = "elf"foes().hp = 10SortStructuredList(foes(), "hp", #AK_ORDER_LOW_TO_HIGH)FOREACH foes()  Console(foes().name + " " + Str(foes().hp))   ' elf 10, orc 30NEXT
Dans le manuel : Tableaux, listes et maps