Un opérateur est un symbole pour effectuer une opération ou une évaluation conditionnelle.
Logique
Les opérateurs logiques renvoient des valeurs en fonction des valeurs booléennes des arguments donnés. Si un argument n'est pas false ou nil, alors l'opérateur l'évalue comme true. Contrairement à de nombreux autres langages, Luau considère à la fois zéro et la chaîne vide comme true. Le tableau suivant résume comment les opérateurs logiques se comportent dans les conditions.
| Opérateur | Descriptions |
|---|---|
| and | S'évalue comme true uniquement si les deux conditions sont vraies |
| or | S'évalue comme true si l'une des conditions est vraie |
| not | S'évalue comme l'opposé de la condition |
and
L'opérateur binaire and renvoie l'un des deux arguments. Si le premier argument s'évalue à true, alors il renvoie le deuxième argument. Sinon, il renvoie le premier argument.
print(4 and 5) -- 5print(nil and 12) -- nilprint(false and 12) -- falseprint(false and true) -- falseprint(false and false) -- falseprint(true and false) -- falseprint(true and true) -- true
Vous pouvez utiliser and pour tester plusieurs conditions dans les structures de contrôle telles que les if statements et les while loops. Par exemple, l'instruction if‑then suivante teste que deux conditions sont toutes deux vraies :
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("Nous avons un dîner de spaghetti")elseprint("Il manque quelque chose...")end-- Sortie : Nous avons un dîner de spaghetti
or
L'opérateur binaire or renvoie l'un des deux arguments. Si le premier argument s'évalue à true, alors il renvoie le premier argument. Sinon, il renvoie le deuxième argument.
local y = x or 1print(y) -- 1 car x n'existe pas et est donc nillocal d = falselocal e = d or 1print(e) -- 1 car d est falseprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- trueprint(false or false) -- falseprint(true or false) -- trueprint(true or true) -- true
Vous pouvez utiliser or pour effectuer des tests logiques complexes dans les structures de contrôle. Par exemple, l'instruction if‑then suivante teste si deux conditions sont vraies ou si une troisième condition est vraie :
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("Nous avons soit un dîner de spaghetti SOIT du pain à l'ail")elseprint("Il manque quelque chose...")end-- Sortie : Nous avons soit un dîner de spaghetti SOIT du pain à l'ail
not
L'opérateur unaire not renvoie la valeur booléenne opposée de l'argument. Si l'argument est false ou nil, alors il renvoie true. Sinon, il renvoie false.
print(not true) -- falseprint(not false) -- trueprint(not nil) -- trueprint(not "text") -- falseprint(not 0) -- false
Vous pouvez utiliser l'opérateur not pour déclencher une condition ou une boucle si une variable est false ou nil.
local nilVariable -- La variable est déclarée mais n'a pas de valeur, donc elle est nillocal falseVariable = false -- La variable est déclarée avec une valeur de falseif not nilVariable thenprint(nilVariable) -- Affiche "nil" car nil n'est pas trueendif not falseVariable thenprint(falseVariable) -- Affiche "false" car false n'est pas trueend
Vous pouvez également utiliser l'opérateur not pour tester l'opposé d'une déclaration à plusieurs conditions. Dans l'exemple de code suivant, la condition if‑then teste qu'il n'est ni vrai que trois est supérieur à quatre, ni vrai que cinq est supérieur à quatre.
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Trois est inférieur à 4 et cinq est supérieur à 4.")end-- Sortie : Trois est inférieur à 4 et cinq est supérieur à 4.
Relationnel
Les opérateurs relationnels comparent deux paramètres et renvoient une booléen: true ou false.
| Opérateur | Description | Exemple | Métaméthode associée |
|---|---|---|---|
| == | Égal à | 3 == 5 → false | __eq |
| ~= | Pas égal à | 3 ~= 5 → true | |
| > | Supérieur à | 3 > 5 → false | |
| < | Inférieur à | 3 < 5 → true | __lt |
| >= | Supérieur ou égal à | 3 >= 5 → false | |
| <= | Inférieur ou égal à | 3 <= 5 → true | __le |
Arithmétique
Luau prend en charge les opérateurs binaires habituels ainsi que l'exponentiation, le reste, et la négation unaire.
| Opérateur | Description | Exemple | Métaméthode associée |
|---|---|---|---|
| + | Addition | 1 + 1 = 2 | __add |
| - | Soustraction | 1 - 1 = 0 | __sub |
| * | Multiplication | 5 * 5 = 25 | __mul |
| / | Division | 10 / 5 = 2 | __div |
| // | Division entière | 10 // 4 = 2 | __idiv |
| ^ | Exponentiation | 2 ^ 4 = 16 | __pow |
| % | Reste | 13 % 7 = 6 | __mod |
| - | Négation unaire | -2 = 0 - 2 | __unm |
Affectation composée
Vous pouvez utiliser des opérateurs d'affectation composés pour définir une variable égale au résultat d'une opération où le premier paramètre est la valeur actuelle de la variable.
L'opération dans une affectation composée se produit une seule fois. Par exemple, si une expression génère un indice aléatoire dans un tableau, Luau utilise le même indice à la fois pour l'opération et pour l'affectation.
Dans les exemples suivants, supposons que local x = 3.
| Opérateur | Operation | Exemple | Nouvelle valeur de x |
|---|---|---|---|
| += | Addition | x += 2 | 5 |
| -= | Soustraction | x -= 2 | 1 |
| *= | Multiplication | x *= 2 | 6 |
| /= | Division | x /= 2 | 1.5 |
| //= | Division entière | x //= 2 | 1 |
| %= | Reste | x %= 2 | 1 |
| ^= | Exponentiation | x ^= 2 | 9 |
| ..= | Concaténation | x ..= " World!" | "3 World!" |
Divers
Les opérateurs divers incluent la concaténation et la longueur.
| Opérateur | Description | Exemple | Métaméthode associée |
|---|---|---|---|
| .. | Concatène deux chaînes | print("Bonjour " .. "Monde !") | __concat |
| # | Longueur de table | Si tableVar = {1, 2, 3}, alors #tableVar == 3. | __len |