Operator jest symbolem wykonywania operacji lub oceny warunkowej .
Logiczne
Operatory logiczne zwracają wartości w zależności od wartości booleanowych 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 rozważa zarówno zero, jak i pustą strunę jako true .Poniższa tabela podsumowuje, w jaki sposób operatory logiczne zachowują się w warunkach.
Operator | Opisy |
---|---|
and | Ocenia jako true tylko wtedy, gdy oba warunki są prawdziwe |
or | Ocenia jako true jeśli którekolwiek z warunków jest prawdą |
not | Ocenia jako przeciwieństwo warunku |
oraz
Operator binarny and zwraca jeden z dwóch argumentów.Jeśli pierwszy argument oceni się do true, to zwraca drugi argument.W przeciwnym razie zwraca pierwszy argument.
print(4 and 5) -- 5print(nil and 12) -- niezerowyprint(false and 12) -- fałszprint(false and true) -- fałszprint(false and false) -- fałszprint(true and false) -- fałszprint(true and true) -- true
Możesz użyć and do testowania wielu warunków w strukturach kontroli takich jak if oświadczenia i while pętle .Na przykład, następujące if ‑ then stwierdzenia testują, że oba warunki są prawdziwe:
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("We have spaghetti dinner")elseprint("Something is missing...")end-- Output: We have spaghetti dinner
or
Operator binarny or zwraca jeden z dwóch argumentów.Jeśli pierwszy argument oceni się do true, to zwraca pierwszy argument.W przeciwnym razie zwraca drugi argument.
local y = x or 1print(y) -- 1, ponieważ x nie istnieje i jest zatem nulowelocal d = falselocal e = d or 1print(e) -- 1, ponieważ d jest fałszywyprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- prawdaprint(false or false) -- fałszprint(true or false) -- prawdaprint(true or true) -- true
Możesz użyć or do wykonywania złożonych testów logicznych w strukturach kontroli.Na przykład następujące oświadczenie if - then testuje, czy dwie warunki są prawdą lub czy trzeci warunek jest prawdą:
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("We have either spaghetti dinner OR garlic bread")elseprint("Something is missing...")end-- Output: We have either spaghetti dinner OR garlic bread
nie
Operator jednoznaczny not zwraca przeciwną wartość binarną argumentu.Jeśli argument jest false lub nil, to zwraca true.W przeciwnym razie zwraca false .
print(not true) -- fałszprint(not false) -- prawdaprint(not nil) -- prawdaprint(not "text") -- fałszprint(not 0) -- false
Możesz użyć operatora not, aby uruchomić warunkowy lub pętelę, jeśli zmienna jest false lub nil.
local nilVariable -- Zmienna jest deklarowana, ale nie ma wartości, więc jest nillocal falseVariable = false -- Zmienna jest deklarowana z wartością fałszuif not nilVariable thenprint(nilVariable) -- Wyświetla "nil", ponieważ nil nie jest prawdziwyendif not falseVariable thenprint(falseVariable) -- Wyświetla "false", ponieważ fałsz nie jest prawdąend
Możesz również użyć operatora not do testowania przeciwieństwa całego wielokrotnego oświadczenia warunkowego.W następnym przykładzie kodu, testy warunkowe if - then, które nie są prawdą, że trzy są większe od czterech, ani nie są prawdą, że pięć jest większe od czterech.
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Three is less than 4 and five is greater than 4.")end-- Output: Three is less than 4 and five is greater than 4.
Relacyjny
Operatory relacyjne porównują dwa parametry i zwracają boolean : true lub false .
Operator | Opis | Przykład | Powiązany metametodą |
---|---|---|---|
== | Równy z | 3 == 5 → false | __eq |
~= | Nie równa się | 3 ~= 5 → true | |
> | Więcej niż | 3 > 5 → false | |
< | Mniej niż | 3 < 5 → true | __lt |
>= | Większy niż lub równy | 3 >= 5 → false | |
<= | Mniej niż lub równy | 3 <= 5 → true | __le |
Arytmetyka
Luau wspiera zwykłe operatory binarne wraz z wykładnikiem, modułem i negacją jednoznaczną.
Operator | Opis | Przykład | Powiązany metametodą |
---|---|---|---|
+ | Dodanie | 1 + 1 = 2 | __add |
- | Odejmowanie | 1 - 1 = 0 | __sub |
* | Mnożenie | 5 * 5 = 25 | __mul |
/ | Dzielenie | 10 / 5 = 2 | __div |
// | Podział piętra | 10 // 4 = 2``-10 // 4 = -3 | __idiv |
^ | Wykładnianie | 2 ^ 4 = 16 | __pow |
% | Moduł | 13 % 7 = 6 | __mod |
- | Negacja jednoznaczna | -2 = 0 - 2 | __unm |
Przydział związku
Możesz używać operatorów przypisania związanych, aby ustawić zmienną równą wynikowi operacji, w której pierwszy parametr jest obecną wartością zmiennej.
Operacja w przypisaniu związku 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 następujących przykładach załóż local x = 3.
Operator | Operacja | Przykład | Nowa wartość x |
---|---|---|---|
+= | Dodanie | x += 2 | 5 |
-= | Odejmowanie | x -= 2 | 1 |
*= | Mnożenie | x *= 2 | 6 |
/= | Dzielenie | x /= 2 | 1.5 |
//= | Podział piętra | x //= 2 | 1 |
%= | Moduł | x %= 2 | 1 |
^= | Wykładnianie | x ^= 2 | 9 |
..= | Konkatenacja | x ..= " World!" | "3 World!" |
Różne
Operatorzy różne obejmują łączenie i długość .
Operator | Opis | Przykład | Powiązany metametodą |
---|---|---|---|
.. | Łączy dwie struny | print("Hello " .. "World!") | __concat |
# | Długość tabeli | Jeśli tableVar = {1, 2, 3} , to #tableVar == 3 . | __len |