Prenom
Nom
Mot de passe

Forgot Password


Logicamp-facebook Logicamp-Twitter Logicamp-Scoopit hypergridbusiness opensimulator youtube youtube
          logicamp.org

Users in world : 0
Total Regions : 123
last 30 days : 84
Total Users : 7491
Grid is ONLINE

OpenSim Tutorial : Cours de LSL - Module 4

La portée des variables et des fonctions

Dans LSL, il existe deux niveaux de portée : globale et locale.

La portée globale s'applique aux fonctions définies par l'utilisateur et aux variables globales. Elles sont généralement définies au début du programme et sont accessibles partout dans le script.

La portée locale concerne des variables créées dans des blocs de code c'est-à-dire entre une accolade ouvrante et une accolade fermante { bloc } . Une variable locale est créée temporairement et n'existe que dans le bloc. On ne peut pas y faire référence depuis l'extérieur du bloc.


Les fonctions

Dans la dernière section, nous avons découvert les fonctions globales, le premier des deux types de fonctions du LSL. Le second, les fonctions de bibliothèque, sera traité prochainement. Les fonctions définies par l'utilisateur permettent de créer des blocs de code qui réalisent une tâche ou un calcul spécifique. Elles sont placées au-dessus de l'état par défaut, soit avant, soit après 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 après avoir été appelée, vous devez en spécifier le type. Ainsi par exemple, pour extraire la valeur absolue d'une valeur décimale, 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 paramètre de type float. Les fonctions peuvent avoir n'importe quel nombre de paramètres (zéro compris). L'exemple suivant montre les formats autorisés pour nommer une fonction :


Deux caractéristiques importantes des fonctions LSL font que leurs paramètres sont transférés par valeur et qu'ils acceptent la récursion. 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 transféré dans add_one, il l'est sous forme de valeur, soit 10. Ainsi toute opération effectuée sur n dans la fonction agit sur une copie locale, et non sur la variable number. C'est généralement ce qui est prévu 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 bibliothèque. Elles sont intégrées et destinées à réaliser des tâches 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 régulièrement intégrées. Pour obtenir une description complète 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 définies par l'utilisateur. Elles sont disponibles dans tout gestionnaire d'évènements ou fonction générée par l'utilisateur, leurs arguments sont transférés par valeur et peuvent ou non renvoyer une valeur. Certaines se voient aussi affecter une valeur de délai qui permet de protéger OpenSim de certains types d'abus.


    
A propos         Historique         Contact         Presse         Conditions Générales        
Rejoignez-nous sur    
Logicamp-facebook Logicamp-Twitter Logicamp-Scoopit
Copyright(c) 2014 - Logicamp, a Belgian Non-profit Organization