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) -- 5
print(nil and 12) -- nil
print(false and 12) -- false
print(false and true) -- false
print(false and false) -- false
print(true and false) -- false
print(true and true) -- trueVous 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 = true
local tomatoSauce = true
if pasta == true and tomatoSauce == true then
print("Nous avons un dîner de spaghetti")
else
print("Il manque quelque chose...")
end
-- Sortie : Nous avons un dîner de spaghettior
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 1
print(y) -- 1 car x n'existe pas et est donc nil
local d = false
local e = d or 1
print(e) -- 1 car d est false
print(4 or 5) -- 4
print(nil or 12) -- 12
print(false or 12) -- 12
print(false or true) -- true
print(false or false) -- false
print(true or false) -- true
print(true or true) -- trueVous 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 = false
local tomatoSauce = true
local garlicBread = true
if (pasta == true and tomatoSauce == true) or garlicBread == true then
print("Nous avons soit un dîner de spaghetti SOIT du pain à l'ail")
else
print("Il manque quelque chose...")
end
-- Sortie : Nous avons soit un dîner de spaghetti SOIT du pain à l'ailnot
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) -- false
print(not false) -- true
print(not nil) -- true
print(not "text") -- false
print(not 0) -- falseVous 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 nil
local falseVariable = false -- La variable est déclarée avec une valeur de false
if not nilVariable then
print(nilVariable) -- Affiche "nil" car nil n'est pas true
end
if not falseVariable then
print(falseVariable) -- Affiche "false" car false n'est pas true
endVous 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 = 3
local four = 4
local five = 5
if not (three > four or five < four) then
print("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 |