Seorang operator adalah simbol untuk melakukan operasi atau evaluasi kondisional.
Logika
Operator logika 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 baik nol maupun string kosong sebagai true. Tabel berikut merangkum bagaimana operator logika berfungsi dalam kondisional.
| Operator | Deskripsi |
|---|---|
| and | Mengevaluasi sebagai true hanya jika kedua kondisi adalah true |
| or | Mengevaluasi sebagai true jika salah satu kondisi adalah true |
| not | Mengevaluasi sebagai kebalikan dari kondisi |
and
Operator biner and mengembalikan salah satu dari dua argumen. Jika argumen pertama mengevaluasi ke true, maka ia mengembalikan argumen kedua. Jika tidak, ia mengembalikan argumen pertama.
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
Anda dapat menggunakan and untuk menguji beberapa kondisi dalam struktur kontrol seperti if statements dan while loops. Misalnya, pernyataan if‑then berikut menguji bahwa dua kondisi keduanya benar:
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("Kami memiliki makan malam spaghetti")elseprint("Ada yang hilang...")end-- Output: Kami memiliki makan malam spaghetti
or
Operator biner or mengembalikan salah satu dari dua argumen. Jika argumen pertama mengevaluasi ke true, maka ia mengembalikan argumen pertama. Jika tidak, ia mengembalikan argumen kedua.
local y = x or 1print(y) -- 1 karena x tidak ada dan oleh karena itu nillocal 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) -- trueprint(false or false) -- falseprint(true or false) -- trueprint(true or true) -- true
Anda dapat menggunakan or untuk melakukan pengujian logika yang kompleks dalam struktur kontrol. Misalnya, pernyataan if‑then berikut menguji apakah dua kondisi benar atau sebuah kondisi ketiga benar:
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("Kami memiliki makan malam spaghetti ATAU roti bawang")elseprint("Ada yang hilang...")end-- Output: Kami memiliki makan malam spaghetti ATAU roti bawang
not
Operator unary not mengembalikan nilai boolean kebalikan dari argumen. Jika argumen adalah false atau nil, maka ia mengembalikan true. Jika tidak, ia mengembalikan false.
print(not true) -- falseprint(not false) -- trueprint(not nil) -- trueprint(not "text") -- falseprint(not 0) -- false
Anda dapat menggunakan operator not untuk memicu sebuah kondisi atau loop jika sebuah variabel adalah false atau nil.
local nilVariable -- Variabel dideklarasikan tetapi tidak memiliki nilai, jadi nillocal falseVariable = false -- Variabel dideklarasikan dengan nilai falseif not nilVariable thenprint(nilVariable) -- Mengeluarkan "nil" karena nil bukan trueendif not falseVariable thenprint(falseVariable) -- Mengeluarkan "false" karena false bukan trueend
Anda juga dapat menggunakan operator not untuk menguji kebalikan dari sebuah pernyataan multi-kondisi. Dalam contoh kode berikut, kondisi if‑then menguji bahwa tidak benar bahwa tiga lebih besar dari empat dan tidak benar bahwa lima lebih besar dari empat.
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Tiga kurang dari 4 dan lima lebih besar dari 4.")end-- Output: Tiga kurang dari 4 dan lima lebih besar dari 4.
Relasional
Operator relasional membandingkan dua parameter dan mengembalikan sebuah boolean: true atau false.
| Operator | Deskripsi | Contoh | Metamethod terkait |
|---|---|---|---|
| == | Sama dengan | 3 == 5 → false | __eq |
| ~= | Tidak sama dengan | 3 ~= 5 → true | |
| > | Lebih besar dari | 3 > 5 → false | |
| < | Lebih kecil dari | 3 < 5 → true | __lt |
| >= | Lebih besar dari atau sama dengan | 3 >= 5 → false | |
| <= | Lebih kecil dari atau sama dengan | 3 <= 5 → true | __le |
Aritmetika
Luau mendukung operator biner biasa bersama dengan eksponensiasi, modulus, dan negasi unary.
| Operator | Deskripsi | Contoh | Metamethod terkait |
|---|---|---|---|
| + | Penjumlahan | 1 + 1 = 2 | __add |
| - | Pengurangan | 1 - 1 = 0 | __sub |
| * | Perkalian | 5 * 5 = 25 | __mul |
| / | Pembagian | 10 / 5 = 2 | __div |
| // | Pembagian Lantai | 10 // 4 = 2 | __idiv |
| ^ | Eksponensiasi | 2 ^ 4 = 16 | __pow |
| % | Modulus | 13 % 7 = 6 | __mod |
| - | Negasi unary | -2 = 0 - 2 | __unm |
Penugasan gabungan
Anda dapat menggunakan operator penugasan gabungan untuk menetapkan variabel sama dengan hasil dari sebuah operasi di mana parameter pertama adalah nilai saat ini dari variabel tersebut.
Operasi dalam penugasan gabungan terjadi sekali. Misalnya, jika sebuah ekspresi menghasilkan indeks acak dalam sebuah tabel, Luau menggunakan indeks yang sama untuk operasi dan penugasan.
Dalam contoh berikut, misalkan local x = 3.
| Operator | Operasi | Contoh | Nilai Baru dari x |
|---|---|---|---|
| += | Penjumlahan | x += 2 | 5 |
| -= | Pengurangan | x -= 2 | 1 |
| *= | Perkalian | x *= 2 | 6 |
| /= | Pembagian | x /= 2 | 1.5 |
| //= | Pembagian Lantai | x //= 2 | 1 |
| %= | Modulus | x %= 2 | 1 |
| ^= | Eksponensiasi | x ^= 2 | 9 |
| ..= | Konkatensi | x ..= " World!" | "3 World!" |
Lain-lain
Operator lain-lain mencakup konkatensi dan panjang.
| Operator | Deskripsi | Contoh | Metamethod terkait |
|---|---|---|---|
| .. | Menggabungkan dua string | print("Halo " .. "Dunia!") | __concat |
| # | Panjang tabel | Jika tableVar = {1, 2, 3}, maka #tableVar == 3. | __len |