Bir operatör, bir işlem veya koşullu değerlendirme gerçekleştirmek için bir semboldür.
Mantıksal
Mantıksal operatörler, verilen argümanların boolean değerlerine bağlı olarak değer döner. Eğer bir argüman false veya nil değilse, o zaman operatör bunu true olarak değerlendirir. Diğer birçok dilden farklı olarak, Luau hem sıfırı hem de boş dizgiyi true olarak kabul eder. Aşağıdaki tablo, mantıksal operatörlerin koşullar içindeki davranışlarını özetlemektedir.
| Operatör | Açıklamalar |
|---|---|
| and | Her iki koşul da doğruysa true olarak değerlendirilir |
| or | Herhangi bir koşul doğruysa true olarak değerlendirilir |
| not | Koşulun tersini değerlendirir |
and
İkili operatör and, iki argümandan birini döner. Eğer ilk argüman true olarak değerlendirilirse, o zaman ikinci argümanı döner. Aksi halde, ilk argümanı döner.
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) -- trueand operatörünü, if ifadeleri ve while döngüleri gibi kontrol yapılarında birden fazla koşulu test etmek için kullanabilirsiniz. Örneğin, aşağıdaki if‑then ifadesi, iki koşulun da doğru olduğunu test eder:
local pasta = true
local tomatoSauce = true
if pasta == true and tomatoSauce == true then
print("Spagetti akşam yemeğimiz var")
else
print("Bir şey eksik...")
end
-- Çıktı: Spagetti akşam yemeğimiz varor
İkili operatör or, iki argümandan birini döner. Eğer ilk argüman true olarak değerlendirilirse, o zaman ilk argümanı döner. Aksi halde, ikinci argümanı döner.
local y = x or 1
print(y) -- 1 çünkü x yok ve dolayısıyla nil
local d = false
local e = d or 1
print(e) -- 1 çünkü d sahte
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) -- trueor operatörünü, kontrol yapılarında karmaşık mantıksal testler yapmak için kullanabilirsiniz. Örneğin, aşağıdaki if‑then ifadesi, iki koşulun doğru olup olmadığını test eder veya üçüncü bir koşulun doğru olup olmadığını kontrol eder:
local pasta = false
local tomatoSauce = true
local garlicBread = true
if (pasta == true and tomatoSauce == true) or garlicBread == true then
print("Ya spagetti akşam yemeğimiz var ya da sarımsak ekmeğimiz var")
else
print("Bir şey eksik...")
end
-- Çıktı: Ya spagetti akşam yemeğimiz var ya da sarımsak ekmeğimiz varnot
Tekil operatör not, argümanın ters boolean değerini döner. Eğer argüman false veya nil ise, o zaman true döner. Aksi halde, false döner.
print(not true) -- false
print(not false) -- true
print(not nil) -- true
print(not "metin") -- false
print(not 0) -- falsenot operatörünü, bir değişken false veya nil olduğunda bir koşul veya döngü tetiklemek için kullanabilirsiniz.
local nilVariable -- Değişken tanımlanmış ama hiçbir değere sahip değil, bu yüzden nil
local falseVariable = false -- Değişken, false değeri ile tanımlandı
if not nilVariable then
print(nilVariable) -- Çıktı "nil" çünkü nil doğru değil
end
if not falseVariable then
print(falseVariable) -- Çıktı "false" çünkü false doğru değil
endBunun yanı sıra, not operatörünü, tüm çoklu koşul ifadelerinin tersini test etmek için de kullanabilirsiniz. Aşağıdaki kod örneğinde, if‑then koşulu, üçün dörtten büyük olmasının doğru olmadığını ve beşin dörtten büyük olmasının doğru olmadığını test eder.
local three = 3
local four = 4
local five = 5
if not (three > four or five < four) then
print("Üç 4'ten küçüktür ve beş 4'ten büyüktür.")
end
-- Çıktı: Üç 4'ten küçüktür ve beş 4'ten büyüktür.İlişkisel
İlişkisel operatörler, iki parametreyi karşılaştırır ve boolean: true veya false döner.
| Operatör | Açıklama | Örnek | İlişkili metamethod |
|---|---|---|---|
| == | Eşit | 3 == 5 → false | __eq |
| ~= | Eşit değil | 3 ~= 5 → true | |
| > | Büyüktür | 3 > 5 → false | |
| < | Küçüktür | 3 < 5 → true | __lt |
| >= | Büyük veya eşit | 3 >= 5 → false | |
| <= | Küçük veya eşit | 3 <= 5 → true | __le |
Aritmetik
Luau, eksponansiyasyon, modül ve tekil negasyon ile birlikte olağan ikili operatörleri destekler.
| Operatör | Açıklama | Örnek | İlişkili metamethod |
|---|---|---|---|
| + | Toplama | 1 + 1 = 2 | __add |
| - | Çıkarma | 1 - 1 = 0 | __sub |
| * | Çarpma | 5 * 5 = 25 | __mul |
| / | Bölme | 10 / 5 = 2 | __div |
| // | Bötçü Bölme | 10 // 4 = 2 | __idiv |
| ^ | Üslü sayı | 2 ^ 4 = 16 | __pow |
| % | Modül | 13 % 7 = 6 | __mod |
| - | Tekil negasyon | -2 = 0 - 2 | __unm |
Bileşik atama
Bileşik atama operatörlerini, bir değişkenin eşitliğini, ilk parametrenin değişkenin mevcut değeri olduğu bir işlemin sonucuna ayarlamak için kullanabilirsiniz.
Bileşik atamada işlem bir kez gerçekleşir. Örneğin, bir ifade bir tabloda rastgele bir indeks oluşturursa, Luau hem işlem hem de atama için aynı indeksi kullanır.
Aşağıdaki örneklerde, local x = 3 olduğunu varsayın.
| Operatör | İşlem | Örnek | x'in Yeni Değeri |
|---|---|---|---|
| += | Toplama | x += 2 | 5 |
| -= | Çıkarma | x -= 2 | 1 |
| *= | Çarpma | x *= 2 | 6 |
| /= | Bölme | x /= 2 | 1.5 |
| //= | Bötçü Bölme | x //= 2 | 1 |
| %= | Modül | x %= 2 | 1 |
| ^= | Üslü sayı | x ^= 2 | 9 |
| ..= | Birleştirme | x ..= " Dünya!" | "3 Dünya!" |
Çeşitli
Çeşitli operatörler, birleştirme ve uzunluk içerir.
| Operatör | Açıklama | Örnek | İlişkili metamethod |
|---|---|---|---|
| .. | İki dizgiyi birleştirir | print("Merhaba " .. "Dünya!") | __concat |
| # | Tablonun uzunluğu | Eğer tableVar = {1, 2, 3} ise, o zaman #tableVar == 3. | __len |