An operator is a symbol for performing an operation or conditional evaluation.
Logiczne
Operatory logiczne zwracają wartości w zależności od wartości logicznych podanych argumentów. Jeśli argument nie jest false lub nil, operator ocenia go jako true. W przeciwieństwie do wielu innych języków, Luau uznaje zarówno zero, jak i pusty ciąg znaków za true. Poniższa tabela podsumowuje, jak działają operatory logiczne w warunkach.
| Operator | Opisy |
|---|---|
| and | Ocenia jako true tylko wtedy, gdy obie warunki są prawdziwe |
| or | Ocenia jako true, jeśli którykolwiek z warunków jest prawdziwy |
| not | Ocenia jako przeciwny do warunku |
and
Operator binarny and zwraca jeden z dwóch argumentów. Jeśli pierwszy argument ocenia do true, zwraca drugi argument. W przeciwnym razie zwraca pierwszy 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
Możesz użyć and, aby przetestować wiele warunków w strukturach kontrolnych, takich jak if statements i while loops. Na przykład, poniższe zdanie if‑then sprawdza, czy dwa warunki są oba prawdziwe:
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("Mamy spaghetti na kolację")elseprint("Coś brakuje...")end-- Output: Mamy spaghetti na kolację
or
Operator binarny or zwraca jeden z dwóch argumentów. Jeśli pierwszy argument ocenia do true, zwraca pierwszy argument. W przeciwnym razie zwraca drugi argument.
local y = x or 1print(y) -- 1 ponieważ x nie istnieje i zatem jest nillocal d = falselocal e = d or 1print(e) -- 1 ponieważ d jest fałszyweprint(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
Możesz użyć or, aby przeprowadzić złożone testy logiczne w strukturach kontrolnych. Na przykład, poniższe zdanie if‑then sprawdza, czy dwa warunki są prawdziwe lub trzeci warunek jest prawdziwy:
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("Mamy albo spaghetti na kolację, ALBO chleb czosnkowy")elseprint("Coś brakuje...")end-- Output: Mamy albo spaghetti na kolację, ALBO chleb czosnkowy
not
Operator unarny not zwraca przeciwną wartość logiczną argumentu. Jeśli argument to false lub nil, zwraca true. W przeciwnym razie zwraca false.
print(not true) -- falseprint(not false) -- trueprint(not nil) -- trueprint(not "text") -- falseprint(not 0) -- false
Możesz użyć operatora not, aby uruchomić warunek lub pętlę, jeśli zmienna jest false lub nil.
local nilVariable -- Zmienna jest zadeklarowana, ale nie ma wartości, więc jest nillocal falseVariable = false -- Zmienna jest zadeklarowana z wartością falseif not nilVariable thenprint(nilVariable) -- Wydrukuje "nil", ponieważ nil nie jest prawdziweendif not falseVariable thenprint(falseVariable) -- Wydrukuje "false", ponieważ false nie jest prawdziweend
Możesz również użyć operatora not, aby przetestować przeciwną wartość całego wyrażenia z wieloma warunkami. W poniższym przykładzie kodu, warunek if‑then sprawdza, że ani nieprawdziwe jest to, że trzy są większe od czterech, ani nie jest prawdziwe, że pięć jest większe od czterech.
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Trzy jest mniejsze od 4 i pięć jest większe od 4.")end-- Output: Trzy jest mniejsze od 4 i pięć jest większe od 4.
Relacyjne
Operatory relacyjne porównują dwa parametry i zwracają boolean: true lub false.
| Operator | Opis | Przykład | Powiązana metoda metatabeli |
|---|---|---|---|
| == | Równy | 3 == 5 → false | __eq |
| ~= | Nie równy | 3 ~= 5 → true | |
| > | Większy niż | 3 > 5 → false | |
| < | Mniejszy niż | 3 < 5 → true | __lt |
| >= | Większy lub równy | 3 >= 5 → false | |
| <= | Mniejszy lub równy | 3 <= 5 → true | __le |
Aritmetyczne
Luau obsługuje zwykłe operatory binarne wraz z potęgowanie, dzieleniem, oraz negacją unarną.
| Operator | Opis | Przykład | Powiązana metoda metatabeli |
|---|---|---|---|
| + | Dodawanie | 1 + 1 = 2 | __add |
| - | Odejmowanie | 1 - 1 = 0 | __sub |
| * | Mnożenie | 5 * 5 = 25 | __mul |
| / | Dzielenie | 10 / 5 = 2 | __div |
| // | Dzielenie całkowite | 10 // 4 = 2 | __idiv |
| ^ | Potęgowanie | 2 ^ 4 = 16 | __pow |
| % | Operacja modulo | 13 % 7 = 6 | __mod |
| - | Negacja unarna | -2 = 0 - 2 | __unm |
Przypisanie złożone
Możesz używać operatorów przypisania złożonego, aby ustawić zmienną równą wynikowi operacji, w której pierwszy parametr to bieżąca wartość zmiennej.
Operacja w przypisaniu złożonym występuje raz. Na przykład, jeśli wyrażenie generuje losowy indeks w tabeli, Luau używa tego samego indeksu zarówno dla operacji, jak i przypisania.
W poniższych przykładach zakładamy, że local x = 3.
| Operator | Operacja | Przykład | Nowa wartość x |
|---|---|---|---|
| += | Dodawanie | x += 2 | 5 |
| -= | Odejmowanie | x -= 2 | 1 |
| *= | Mnożenie | x *= 2 | 6 |
| /= | Dzielenie | x /= 2 | 1.5 |
| //= | Dzielenie całkowite | x //= 2 | 1 |
| %= | Operacja modulo | x %= 2 | 1 |
| ^= | Potęgowanie | x ^= 2 | 9 |
| ..= | Konkatencja | x ..= " World!" | "3 World!" |
Różne
Różne operatory obejmują konkatenację i długość.
| Operator | Opis | Przykład | Powiązana metoda metatabeli |
|---|---|---|---|
| .. | Konkatenacja dwóch ciągów | print("Witaj " .. "Świecie!") | __concat |
| # | Długość tabeli | Jeśli tableVar = {1, 2, 3}, wtedy #tableVar == 3. | __len |