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) -- 5
print(nil and 12) -- nil
print(false and 12) -- false
print(false and true) -- false
print(false and false) -- false
print(true and false) -- false
print(true and true) -- trueAnda 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 = true
local tomatoSauce = true
if pasta == true and tomatoSauce == true then
print("Kami memiliki makan malam spaghetti")
else
print("Ada yang hilang...")
end
-- Output: Kami memiliki makan malam spaghettior
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 1
print(y) -- 1 karena x tidak ada dan oleh karena itu nil
local d = false
local e = d or 1
print(e) -- 1 karena d adalah false
print(4 or 5) -- 4
print(nil or 12) -- 12
print(false or 12) -- 12
print(false or true) -- true
print(false or false) -- false
print(true or false) -- true
print(true or true) -- trueAnda 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 = false
local tomatoSauce = true
local garlicBread = true
if (pasta == true and tomatoSauce == true) or garlicBread == true then
print("Kami memiliki makan malam spaghetti ATAU roti bawang")
else
print("Ada yang hilang...")
end
-- Output: Kami memiliki makan malam spaghetti ATAU roti bawangnot
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) -- false
print(not false) -- true
print(not nil) -- true
print(not "text") -- false
print(not 0) -- falseAnda 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 nil
local falseVariable = false -- Variabel dideklarasikan dengan nilai false
if not nilVariable then
print(nilVariable) -- Mengeluarkan "nil" karena nil bukan true
end
if not falseVariable then
print(falseVariable) -- Mengeluarkan "false" karena false bukan true
endAnda 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 = 3
local four = 4
local five = 5
if not (three > four or five < four) then
print("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 |