OpenSim Tutorial : Cours de LSL - Module 4
La porte des variables et des fonctions
Dans LSL, il existe deux niveaux de porte : globale et locale.
La porte globale s'applique aux fonctions dfinies par l'utilisateur et aux variables globales. Elles sont gnralement dfinies au dbut du programme et sont accessibles partout dans le script.
La porte locale concerne des variables cres dans des blocs de code c'est--dire entre une accolade ouvrante et une accolade fermante { bloc } .
Une variable locale est cre temporairement et n'existe que dans le bloc. On ne peut pas y faire rfrence depuis l'extrieur du bloc.
Les fonctions
Dans la dernire section, nous avons dcouvert les fonctions globales, le premier des deux types de fonctions du LSL. Le second, les fonctions de bibliothque, sera trait prochainement. Les fonctions dfinies par l'utilisateur permettent de crer des blocs de code qui ralisent une tche ou un calcul spcifique. Elles sont places au-dessus de l'tat par dfaut, soit avant, soit aprs les variables globales et s'crivent ainsi :
Le type correspond au type de retour de la fonction : si vous voulez que la fonction renvoie une valeur aprs avoir t appele, vous devez en spcifier le type. Ainsi par exemple, pour extraire la valeur absolue d'une valeur dcimale, vous pourrez crire la fonction suivante :
Lorsqu'il n'y a qu'une seule instruction dans un bloc, les {} peuvent tre omis.
Ceci serait utilis comme suit :
Vous remarquerez que fabs prend un paramtre de type float. Les fonctions peuvent avoir n'importe quel nombre de paramtres (zro compris). L'exemple suivant montre les formats autoriss pour nommer une fonction :
Deux caractristiques importantes des fonctions LSL font que leurs paramtres sont transfrs par valeur et qu'ils acceptééent la rcursion. Pour comprendre le concept de transfert de valeur, tudiez la fonction suivante :
Quelle est donc la valeur de number ? Comme on peut s'y attendre, elle est gale 11. Ceci est d au fait que, lorsque number est transfr dans add_one, il l'est sous forme de valeur, soit 10. Ainsi toute opration effectue sur n dans la fonction agit sur une copie locale, et non sur la variable number. C'est gnralement ce qui est prvu mais, pour que la fonction renvoie une valeur, il faut utiliser la commande return. Si vous aviez crit add_one comme suit, le nombre resterait gal 10.
Le second type de fonction dans LSL, ce sont les fonctions de bibliothque. Elles sont intgres et destines raliser des tches communes ou fournir une fonctionnalit qui serait difficile crire directement dans LSL. LSL contient plus de 300 fonctions, sans compter que d'autres y sont rgulirement intgres. Pour obtenir une description complte de toutes les fonctions, consultez l'adresse http://lslwiki.com/lslwiki/wakka.php?wakka=functions . Il faut savoir que les fonctions LSL fonctionnent comme celles dfinies par l'utilisateur. Elles sont disponibles dans tout gestionnaire d'vnements ou fonction gnre par l'utilisateur, leurs arguments sont transfrs par valeur et peuvent ou non renvoyer une valeur. Certaines se voient aussi affecter une valeur de dlai qui permet de protger OpenSim de certains types d'abus.
|