Category:LSL List/fr

From Second Life Wiki
Jump to navigation Jump to search

Une liste est un type de donnée spécial qui peut contenir zéro ou plus éléments de n'importe quel autre type de données.

Les listes sont notées au moyen de crochets encadrant leurs éléments, lesquels sont séparés par des virgules.

Exemples de listes : <lsl>[0, 1, 2, 3, 4] ["Oui", "Non", "Peut-être"]</lsl>

(Nota bene : pour les habitués d'autres langages de programmation, il n'y a pas de tableaux 'ARRAY' en LSL, seulement des listes 'LIST')

Types de données variés

Il n'est pas obligatoire que tous les éléments d'une liste soient du même type. Dans une même liste, vous pouvez stocker des chaînes de caractères (string), des entiers (integer), des nombres à virgule (float), des vecteurs (vector), etc.

Exemple: //une liste avec un entier, un nombre à virgule, une chaîne de caractères et un vecteur. <lsl>[1,14.154,"C'est sympa non ?",<0,0,0>]</lsl> Par contre, une liste ne peut contenir une autre liste (vous ne pouvez pas imbriquer des listes). <lsl>[1, "un", 2, "deux"] + [3, "trois"] renvoie [1, "un", 2, "deux", 3, "trois"]</lsl> et non pas : <lsl>[1, "un", 2, "deux", [3, "trois"]]</lsl>

Quand vous ajoutez un élément à une liste, celle-ci mémorise automatiquement quel est le type de donnée de la valeur ajoutée.

Habituellement, étant celui (ou celle) qui ajoute des éléments à une liste, vous savez le type de chaque élément la constituant. Vous pouvez récupérer un élément avec la fonction appropriée llList2<type> telle que : llList2String, llList2Vector, etc. (plus de détails plus loin dans cet article.)

Si besoin, pour retrouver le type de donnée d'un élément d'une liste, vous pouvez utiliser la fonction llGetListEntryType.

Astuce ! Pour ajouter un nombre à virgule (float) dans une une liste, utilisez toujours le séparateur décimal . (1.0 et non pas 1) pour vous assurer qu'il sera bien enregistré comme nombre à virgule et non pas comme entier.

Une liste peut être directement transposée en chaîne de caractères (notion de cast) <lsl>default {

   touch_start(integer total_number)
   {   
       list a = ["abc",1,2,3.14,<0,0,0>];
       llOwnerSay((string)a); // renvoie :  abc123.140000<0.000000, 0.000000, 0.000000>
   }

}</lsl>


(A suivre ...)

Une liste peut grandir dynamiquement autant que l'on le souhaite au cours de l'exécution, dans la limite de la mémoire disponible du script. Néanmoins, il y a une limite de 72 éléments aux listes définies au moment de la compilation.

Il est important de remarquer que la numérotation des éléments de la liste démarre à 0, pas à 1.