Close
    Search Search

    Variable

    A variable est une valeur nommée dans un script qui peut contenir une valeur. Si vous essayez d'accéder à une variable qui n'a pas encore été définie, vous obtiendrez la valeur nil.

    1 impression (variable) -- néant

    Contrairement à d'autres langages, Lua n'est pas fortement typé, et il est plutôt dynamiquement typé. Cela vous donne beaucoup plus de liberté que les langages fortement typés, tels que Java, C++ ou C. Vous pouvez affecter n'importe quelle valeur de n'importe quel type à n'importe quelle variable, qu'elle soit définie ou non !



    Variable

    Affectation des variables

    Contenu

    Types de données

    Les types de données ne sont que ce que leur nom l'indique, des types de données ! Dans Roblox, nous avons accès à plusieurs types de données :

    Type Détails
    Boolean Représente vrai ou faux
    Fonction Une fonction que vous pouvez appeler
    Néant Rien, nul
    Numéro Utilisé pour stocker des nombres
    Chaîne Utilisé pour stocker des textes, une chaîne de caractère Ex : "omg"
    Tableau Un groupe d'articles
    Monter  Une coroutine
    Données d'utilisateur Valeurs non faites en Lua

    Portée

    Variables normales

    Les variables normales sont accessibles à partir de n'importe quelle partie d'un script (vous ne pouvez pas utiliser une variable avant de lui affecter une valeur, mais elle renvoie nil), mais ne peuvent pas être partagées entre les scripts. Les variables normales ne doivent jamais être utilisées car elles sont plus lentes que les variables locales et n'offrent aucun avantage par rapport aux variables locales.[1]



    1 --Un exemple de variable normale 2 3 pi = math.pi 4 5 print(pi) -- 3.1415926535898

    Variables locales

    Les variables locales ont une portée et ne peuvent être utilisées qu'à l'intérieur de leur portée ou en tant que valeurs supérieures. Vous ne pouvez avoir que 200 variables locales à la fois (car Lua a un maximum de 200 registres), mais il est presque impossible d'atteindre cela si vous codez de manière normale.

    Les variables locales peuvent être distinguées des variables globales en raison du mot local placé avant leurs noms définis.

    1 --Un exemple de variable locale 2 3 pi local = math.pi 4 5 print(pi) --3.1415926535898


    Les variables normales peuvent être utilisées entre les portées, tandis que les variables locales n'existent qu'à l'intérieur de la portée. Une portée est par exemple une boucle ou une fonction

    1 Foo = "bar" -- Crée une variable globale 2 fonction DoStuff() 3 local Foo = "pas bar" 4 print(Foo) 5 end 6 fonction DoOtherStuff() 7 Foo = "ceci est bar" 8 end 9 DoStuff( ) -- pas la barre 10 print(Foo) -- la barre 11 DoOtherStuff() 12 print(Foo) -- c'est la barre

    Variables globales

    Les variables globales peuvent être utilisées entre les scripts. En d'autres termes, pouvez-vous effacer une variable dans un script et obtenir sa valeur dans un autre script. Pour pouvoir créer des variables globales, vous devez accéder à la table globale. _G Si vous voulez créer une variable globale, ajoutez simplement cette valeur à la table globale :


    1 _G["MaVariable"] = "Ceci est la valeur"

    Et puis vous pouvez le faire dans un autre script :


    1 print( _G.MyVariable) -- C'est la valeur

    Vous devez vous assurer que le premier script s'exécute en premier, vous pouvez le faire en ajoutant un "wait()" sur la ligne supérieure du deuxième script. Vous pouvez également créer des fonctions globales.

    1 _G["MaFonction"] = function() print("C'est la fonction") end

    Et dans un autre script :

    1 _G.MaFonction()

    Plus d'informations sur la façon dont vous utilisez les tableaux :

    Champs du tableau

    Les champs de table, bien qu'ils se comportent différemment des variables normales et des variables locales, sont toujours des variables.[2]

    Utilisation de tableaux

    Tables

    Les tables sont des groupes de champs accessibles à l'aide de la table. Pour construire une table, démarrez le devoir comme d'habitude...

    1 local a =

    Et puis utilisez des accolades pour montrer qu'il s'agit d'un tableau :

    1 local a = {}

    Pour ajouter des éléments à la table directement dans le constructeur de table, listez-les dans l'ordre, comme ceci :

    1 local a = {1,2,3}

    Pour accéder à un élément d'une table, nous utilisons ce qu'on appelle un index, qui est en quelque sorte un nom de fichier sur un ordinateur.

    Pour trouver la variable à un certain index, vous utilisez les opérateurs d'index, [] et le nom de la table, comme ceci :


    1 tableName locale = {1,2,3} 2 3 print(tableName[index])

    Maintenant, ce code ne fonctionnerait pas car vous ne pouvez pas indexer une table avec nil, mais vous pouvez l'indexer avec tout le reste, comme cet exemple :

    1 tableName local = {} 2 3 tableName[Workspace] = "Workspace" 4 5 tableName[game] = "game" 6 7 print(tableName[Workspace])

    En utilisant cette méthode, vous pourriez obtenir des clients de chat de joueur, des outils, n'importe quoi !



    Pour et tableaux

    Pour parcourir une table, vous pouvez utiliser la boucle for :

    1 local a = {1,2,3,4,5,6,7,8,9,10} 2 pour i=1, 10 do 3 print(a[i]) 4 end

    Quelques sorties :

    1

    2

    3

    4

    Cependant, parfois, vous ne savez pas quelle est la taille d'une table, une méthode consiste à parcourir la table jusqu'à ce que vous atteigniez une valeur nulle :

    1 local a = {2,3,4,2,4,3,4,2,3,43,2,4,3,4,2,3,4,2,3} 2 pour i=1, math .huge do 3 if a[i] == nil then break end 4 print(a[i]) 5 end

    Cependant, cette méthode est très inefficace et pourrait casser trop tôt, voire pas du tout, comme sur cette table :

    1 local a = {1,2,3,4,2,5,nil,3,4,2,5} 2 pour i=1, math.huge do 3 si a[i] == nil then break end 4 print(a[i]) 5 fin

    Pour éviter cela, nous utilisons l'opérateur de longueur, #

    1 local a = {2,3,4,2,5,nil,3,4,2,34,2} 2 pour i=1, #a do 3 print(a[i]) 4 end

    Cela saute la vérification manuelle que nous devions faire auparavant et nous indique la longueur de la table. Cela pourrait être utilisé pour sélectionner des joueurs aléatoires, comme ceci :

    1 PlayerList local = game.Players:GetChildren() 2 local RandomPlayer = PlayerList[math.random(1,#PlayerList)]

    Vous pouvez également utiliser l'opérateur de longueur pour obtenir le nombre de pièces au niveau supérieur de l'espace de travail :

    1 impression(#Workspace:GetChildren())

    Comme vous le savez peut-être, le code précédent fonctionne car nous obtenons la longueur de la table renvoyée, pas l'espace de travail. Veuillez noter que l'opérateur de longueur ne fonctionne pas directement sur les données utilisateur [objets roblox, instances].

    Variables de fonction

    Les fonctions sont les tables de code, ou en d'autres termes, des groupes de code. Les fonctions sont les blocs de construction, et les organisateurs de code fournissent un moyen de réutiliser le code encore et encore sans avoir à le taper tout entier. Les fonctions sont également utilisées pour obtenir des enfants de manière récursive, définir des propriétés, calculer des choses et d'autres divertissements truc. Voici un exemple de fonction :

    1 fonction a() 2 3 fin

    Puisque les fonctions peuvent calculer des choses, pourquoi ne créons-nous pas une fonction qui renvoie une valeur ?

    1 local b = 0 2 fonction a() 3 b = b + 1 4 fin 5 print(b) 6 a() 7 print(b)

    Hmm... Cette fonction pourrait être meilleure, utilisons le mot-clé return !

    1 local b = 0 2 fonction a() 3 b = b + 1 4 return b 5 end 6 print(a(), a(), a(), a())

    La raison pour laquelle nous avons d'abord ajouté à notre variable b est qu'une fois que vous revenez d'une fonction, votre fonction cesse de fonctionner.

    1 fonction a() 2 si vrai alors retourne end 3 print("Ceci ne sera jamais exécuté.") 4 end 5 a()

    Dans le code ci-dessus, la fonction a revient avant d'accéder à l'appel de la fonction print. Cela signifie que vous ne verrez pas l'impression à moins que vous ne supprimiez le retour.

    Une autre chose que vous devez savoir sur le mot-clé de retour est que vous ne pouvez le placer qu'avant un mot-clé de fin. Placer un retour au milieu de votre code n'est autorisé que si vous placez le retour à l'intérieur d'une instruction [quelque chose qui utilise une fin].

    1 fonction a() 2 do return end 3 print("Vous ne verrez pas ceci. Le retour est à l'intérieur d'une instruction do.") 4 end 5 a() 6 7 --- Et un exemple cassé 8 function a() 9 return 10 print("Ce code sera une erreur.") 11 end 12 a()

    Comme vous pouvez le voir, le deuxième exemple ne fonctionne pas car nous avons un retour au milieu. Cela rend non seulement le code plus difficile à lire, mais cela provoque également une erreur.

    Références

    1. ↑ Roberto Ierusalimschy Lua Conseils de performance
    2. R. Ierusalimschy, LH de Figueiredo, W. Celes; Manuel de référence Lua 5.1, Lua.org, août 2006 ; ISBN 85-903798-3-3
    ajouter un commentaire de Variable
    Commentaire envoyé avec succès ! Nous l'examinerons dans les prochaines heures.