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) -- 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
and 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 = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("Spagetti akşam yemeğimiz var")elseprint("Bir şey eksik...")end-- Çıktı: Spagetti akşam yemeğimiz var
or
İ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 1print(y) -- 1 çünkü x yok ve dolayısıyla nillocal d = falselocal e = d or 1print(e) -- 1 çünkü d sahteprint(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
or 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 = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("Ya spagetti akşam yemeğimiz var ya da sarımsak ekmeğimiz var")elseprint("Bir şey eksik...")end-- Çıktı: Ya spagetti akşam yemeğimiz var ya da sarımsak ekmeğimiz var
not
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) -- falseprint(not false) -- trueprint(not nil) -- trueprint(not "metin") -- falseprint(not 0) -- false
not 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 nillocal falseVariable = false -- Değişken, false değeri ile tanımlandıif not nilVariable thenprint(nilVariable) -- Çıktı "nil" çünkü nil doğru değilendif not falseVariable thenprint(falseVariable) -- Çıktı "false" çünkü false doğru değilend
Bunun 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 = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Üç 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 |