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 30NEXTDans le manuel : Tableaux, listes et maps