operatorzy to symbol dla wykonania operacji lub oceny kondycyjnej.
Logiczne
Logiczni operatorzy zwracają wartości w zależności od wartościBooleanowych danych argumentów. Jeśli argument nie jest false lub nil, to operator ocenia go jako true . W przeciwieństwie do wielu innych języków, Luau rozważa zarówno zero, jak i pustą strungę jako 2>truie2>. Tabele
Operator | Opisy |
---|---|
i | Ocenia się jako prawdziwy tylko wtedy, gdy obie warunki są prawdziwe |
lub | Ocenia się jako prawdziwy jeśli któraś z tych warunków jest prawdziwa |
nie | Ocenia się jako przeciwieństwo warunku |
i
Operator binarny and zwraca jeden z dwóch argumentów. Jeśli pierwszy argument ocenia się do true , to zwraca drugi argument. W przeciwnym razie zwraca pierwszy argument.
print(4 and 5) -- 5print(nil and 12) -- nie maprint(false and 12) -- fałszywyprint(false and true) -- fałszywyprint(false and false) -- fałszywyprint(true and false) -- fałszywyprint(true and true) -- true
Możesz użyć and do testowania wielu warunków w strukturach kontrolnych takich jak if stwierdzenia i 2> 4> while4> pętli4>. Na przykład następujące 7> if7> — 0> then
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
lub
Operator binarny or zwraca jeden z dwóch argumentów. Jeśli pierwszy argument ocenia 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 zerolocal 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) -- prawdziwyprint(false or false) -- fałszywyprint(true or false) -- prawdziwyprint(true or true) -- true
Możesz użyć or , aby wykonać złożone testy logiczne w strukturach kontrolnych. Na przykład następujące if — 2>then2> stwierdzenia testują, czy dwa warunki są prawdziwe 5> lub5> warunek trzeci jest prawdziwy:
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
Unaryczny operator not zwraca przeciwne wartości zmienne argumentu. Jeśli argument jest false lub nil, zwraca 1> 4> true4> . W przeciwnym razie zwraca 7> 4> false7>.
print(not true) -- fałszywyprint(not false) -- prawdziwyprint(not nil) -- prawdziwyprint(not "text") -- fałszywyprint(not 0) -- false
Możesz użyć operatora not, aby wywołać kondycyjny lub pętli, jeśli zmienne są false lub nil .
local nilVariable -- Zmienne jest deklarowane, ale nie ma wartości, więc jest nillocal falseVariable = false -- Zmienne jest deklarowane z wartością falseif not nilVariable thenprint(nilVariable) -- Wyświetla „nil”, ponieważ nil nie jest prawdąendif not falseVariable thenprint(falseVariable) -- Wyświetla „ fałszywy”, ponieważ fałszywy nie jest prawdąend
Możesz również użyć operatora not, aby testować przeciwieństwo całego warunkowego oświadczenia. W następnym przykładzie kodu użyto if — then kondycyjne testy, że nie jest prawdą, że trzy jest większe niż cztery lub że nie jest prawdą, że pięć jest większe niż cztery.
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 metametoda |
---|---|---|---|
== | Równać | 3 == 5 → fałszywy | __eq |
!” | Nie równa się | 3 5 → prawdziwy | |
>: | Większa niż | 3 > 5 → fałszywy | |
<: | Mniej niż | 3 < 5 → prawdziwy | __lt |
>= | Większy niż lub równy | 3 >= 5 → fałszywy | |
Mniejszy lub równy | 3 <= 5 → prawdziwy | __le) |
Arytmetyka
Lua wspiera zwykłe operatory binarne wraz z ekspresją, modułem i unaryczną negacją.
Operator | Opis | Przykład | Powiązany metametoda |
---|---|---|---|
+ | Dodanie | 1 + 1 = 2 | __dodaj |
-: | Odejście | 1 - 1 = 0 | __sub: |
* | Mnożenie | 5 * 5 = 25godzin | __mul |
/: | Dywizja | 10 / 5 = 2 | __div |
//) | Dywizja Podłogowa | 10 // 4 = 2-10 // 4 = -3 | __idiv |
^) | Eksponowanie | 2 ^ 4 = 16 | __pow |
% | Moduł | 13% 7 = 6 | __mod |
-: | Unaryczna negacja | -2 = 0 - 2 | __unm |
Zakładanie kompozycji
Możesz użyć operatorów zmiany wartości, aby ustawić zmienne równe wynikowi operacji, w której pierwszy parametr to obecna wartość zmiennej.
Operacja w przydziale kompozycji następuje raz. Na przykład, jeśli wyrażenie generuje losowy indeks w tabeli, Luau używa tego samego indeksu dla operacji i przydziału.
W następujących przykładach załóż, że local x = 3 .
Operator | Operacja | Przykład | Nowa wartość x |
---|---|---|---|
= | Dodanie | x += 2 | 5) |
. | Odejście | x=- 2 | 1: |
* | Mnożenie | x*2 | 6 |
/= | Dywizja | x /= 2 | 1.5.1 »1 |
//=: | Dywizja Podłogowa | x //= 2 | 1: |
%=) | Moduł | x %= 2 | 1: |
^=: | Eksponowanie | x^= 2 | 9.0 |
..= | Połączenie | x..= „Świat!” | „3 świat!” |
Różne
Niektóre operatory obejmują łączenie i długość.
Operator | Opis | Przykład | Powiązany metametoda |
---|---|---|---|
.. | Połącza dwa ciągi | drukuj("Hello " .. "World!" | __concat |
# | Długość stolika | Jeśli tableVar = 1, 2, 3 , to #tableVar == 3 . | __len) |