Seorang operator adalah simbol untuk melakukan operasi atau evaluasi kondisional.
Logis
Operator logis mengembalikan nilai tergantung pada nilai boolean dari argumen yang diberikan.Jika argumen tidak false atau nil , maka operator mengevaluasinya sebagai true .Tidak seperti banyak bahasa lain, Luau menganggap kedua nol dan string kosong sebagai true .Tabel berikut menyimpulkan bagaimana operator logis berperilaku dalam kondisi kondicional.
Pengoperator | Deskripsi |
---|---|
and | Mengevaluasi sebagai true hanya jika kedua kondisi benar |
or | Mengevaluasi sebagai true jika kondisi salah satu benar |
not | Mengevaluasi sebagai kebalikan dari kondisi |
dan
Operator biner and kembali salah satu dari dua argumen.Jika argumen pertama dievaluasi menjadi true , maka ia akan mengembalikan argumen kedua.Jika tidak, ia mengembalikan argumen pertama.
print(4 and 5) -- 5print(nil and 12) -- tidak adaprint(false and 12) -- salahprint(false and true) -- salahprint(false and false) -- salahprint(true and false) -- salahprint(true and true) -- true
Anda dapat menggunakan and untuk menguji banyak kondisi dalam struktur kontrol seperti if pernyataan dan while loop .Sebagai contoh, berikut adalah tes pernyataan if - then yang menunjukkan bahwa dua kondisi sama-sama benar:
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 biner or kembali salah satu dari dua argumen.Jika argumen pertama dievaluasi menjadi true , maka ia akan mengembalikan argumen pertama.Jika tidak, ia mengembalikan argumen kedua.
local y = x or 1print(y) -- 1 karena x tidak ada dan karena itu nollocal d = falselocal e = d or 1print(e) -- 1 karena d adalah falseprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- benarprint(false or false) -- salahprint(true or false) -- benarprint(true or true) -- true
Anda dapat menggunakan or untuk melakukan tes logis kompleks di struktur kontrol.Sebagai contoh, pernyataan berikut if - then ‑ memeriksa apakah dua kondisi benar atau kondisi ketiga benar:
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
tidak
Operator unary not kembali nilai boolean yang berlawanan dari argumen.Jika argumennya adalah false atau nil , maka ia akan mengembalikan true .Jika tidak, ia kembalikan false .
print(not true) -- salahprint(not false) -- benarprint(not nil) -- benarprint(not "text") -- salahprint(not 0) -- false
Anda dapat menggunakan operator not untuk memicu kondisi atau loop jika variabel adalah false atau nil .
local nilVariable -- Variabel dideklarasikan tetapi tidak memiliki nilai, jadi ini nollocal falseVariable = false -- Variabel dideklarasikan dengan nilai falseif not nilVariable thenprint(nilVariable) -- Outputs "nil" karena nil tidak benarendif not falseVariable thenprint(falseVariable) -- Output "false" karena false tidak benarend
Anda juga dapat menggunakan operator not untuk menguji kebalikan dari seluruh pernyataan multi-kondisi.Dalam contoh kode berikut, tes kondisional if - then yang tidak benar bahwa tiga lebih besar dari empat atau tidak benar bahwa lima lebih besar dari empat.
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.
Relasi
Operator relasional membandingkan dua parameter dan mengembalikan boolean : : true atau false .
Pengoperator | Deskripsi | Contoh | Metode metametode terkait |
---|---|---|---|
== | Sama dengan | 3 == 5 → false | __eq |
~= | Tidak sama dengan | 3 ~= 5 → true | |
> | Lebih besar dari | 3 > 5 → false | |
< | Kurang dari | 3 < 5 → true | __lt |
>= | Lebih besar atau sama dengan | 3 >= 5 → false | |
<= | Kurang dari atau sama dengan | 3 <= 5 → true | __le |
Aritmatika
Luau mendukung operator biner biasa bersama dengan eksponensi, modus, dan penyangkalan tunggal.
Pengoperator | Deskripsi | Contoh | Metode metametode terkait |
---|---|---|---|
+ | Tambahan | 1 + 1 = 2 | __add |
- | Pengurangan | 1 - 1 = 0 | __sub |
* | Penggandaan | 5 * 5 = 25 | __mul |
/ | Pembagian | 10 / 5 = 2 | __div |
// | Pembagian Lantai | 10 // 4 = 2``-10 // 4 = -3 | __idiv |
^ | Eksponensialasi | 2 ^ 4 = 16 | __pow |
% | Modul | 13 % 7 = 6 | __mod |
- | Penyangkalan unary | -2 = 0 - 2 | __unm |
Asignasi kompleks
Anda dapat menggunakan operator penugasan kompleks untuk mengatur variabel yang sama dengan hasil operasi di mana parameter pertama adalah nilai variabel saat ini.
Operasi dalam penugasan kompleks terjadi sekali.Sebagai contoh, jika ekspresi menghasilkan indeks acak di tabel, Luau menggunakan indeks yang sama untuk kedua operasi dan penugasan.
Dalam contoh berikut, anggap local x = 3 .
Pengoperator | Operasi | Contoh | Nilai Baru dari x |
---|---|---|---|
+= | Tambahan | x += 2 | 5 |
-= | Pengurangan | x -= 2 | 1 |
*= | Penggandaan | x *= 2 | 6 |
/= | Pembagian | x /= 2 | 1.5 |
//= | Pembagian Lantai | x //= 2 | 1 |
%= | Modul | x %= 2 | 1 |
^= | Eksponensialasi | x ^= 2 | 9 |
..= | Konjungsi | x ..= " World!" | "3 World!" |
Berbagai
Operator lain-lain termasuk konjungsi dan panjang .
Pengoperator | Deskripsi | Contoh | Metode metametode terkait |
---|---|---|---|
.. | Menggabungkan dua string | print("Hello " .. "World!") | __concat |
# | Panjang tabel | Jika tableVar = {1, 2, 3} , maka #tableVar == 3 . | __len |