Bir operatör bir işlemi veya kondisyonlu değerlendirmeyi yapmak için bir semboldür.
Mantıksal
Logik operatörler, verilen argümanların boBoolean değerlerine bağlı olarak değerleri iade eder. Bir argüman false veya nil değilse, operatör onu true olarak değerlendirir. Diğer birçok dilde, Luau zero ve boEmpty stringi de 1> true
Operatör | Açıklamalar |
---|---|
ve | Sadece şu anda doğru olan koşullarda değerlendirilir |
veya: | Herhangi bir koşul doğru ise değerlendirilir |
değil | Durumun tersi olarak değerlendirilir |
ve
Çift sayılı operatör and bir dereden iki değerden birini döndürür. Eğer ilk değer true derse, ikinci değer döndürülür. Aksi takdirde, ilk değer döndürülür.
print(4 and 5) -- 5print(nil and 12) -- hiçprint(false and 12) -- yanlışprint(false and true) -- yanlışprint(false and false) -- yanlışprint(true and false) -- yanlışprint(true and true) -- true
Bir and ile birden fazla koşulu kontrol yapılarında test etmek için, örneğin 2> if2> ifadesi gibi, 5> 6> while6> 循环6> ile test edilir. Örneğin, aşağıdaki 9>
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
veya
Binary operatörü or bir derlediği iki argiden birini iade eder. Eğer ilk argüman değerlendiğinde true değerlendiyse, ilk argüman iade edilir. Aksi takdirde, ikinci argüman iade edilir.
local y = x or 1print(y) -- 1, çünkü x mevcut değildir ve bu nedenle nedirlocal d = falselocal e = d or 1print(e) -- 1 çünkü d yanlışprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- doğruprint(false or false) -- yanlışprint(true or false) -- doğruprint(true or true) -- true
Kontrol yapılarında karmaşık mantıksal testleri or ile yapabilirsiniz. Örneğin, aşağıdaki if — if ifadeleri, iki şartın doğru olduğunu veya1> bir üçüncü şartın doğru olduğunu test eder:
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
değil
Tek bir operatör not , argumentin tersi bir boBoolean değerini iade eder. Eğer argument false veya nil ise, 1> true1> ı döndürür. Aksi takdirde, 4> false4> ı döndürür.
print(not true) -- yanlışprint(not false) -- doğruprint(not nil) -- doğruprint(not "text") -- yanlışprint(not 0) -- false
Eğer bir değişken not veya false ise kondisyonlu veya döngüyü tetiklemek için nil operatörünü kullanabilirsiniz.
local nilVariable -- Değişken ilan edilmiştir, ancak değeri yoktur, bu yüzden sıfırdırlocal falseVariable = false -- Değişkenin değeri false ile ilan edilmiştirif not nilVariable thenprint(nilVariable) -- nil çıktığını çünkü nil doğru değildirendif not falseVariable thenprint(falseVariable) -- Çıkış "yanlış" çünkü yanlış değilend
Ayrıca, bir tüm şartlı ifadenin zıttını test etmek için not operatörünü de kullanabilirsiniz. Aşağıdaki kod örneğinde, if — then koşullu testleri, üçün dört'ten daha büyük olduğunu doğrulamak için değil, dört'ten daha büyük olduğunu doğrulam
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.
İlişkisel
Relational operatörleri iki parametriyi karşılaştırır ve bir boolean ile döndürür. Relational operatörleri iki parametriyi karşılaştırır ve bir button ile döndürür.
Operatör | Açıklama | Örnek | İlişkili metod |
---|---|---|---|
== | Eşdeğer | 3 == 5 → yanlış | __eq |
: | Eşit değil | 3 5 → doğru | |
>: | Daha büyük | 3 > 5 → false | |
<> | En az | 3 → doğru | __lt |
≥ | Daha büyük veya eşit | 3 >= 5 → false | |
Küçük veya eşit | 3 <= 5 → doğru | __le |
Aritmetik
Lua, onaltılık ifadeleri, modül ve tek sayısal olumsuzlukla birlikte kullanılan üç temel binary operatörlerini destekler.
Operatör | Açıklama | Örnek | İlişkili metod |
---|---|---|---|
+ | Ek | 1 + 1 = 2 | __ekle |
- | Tersyüz | 1 - 1 = 0 | __sub |
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | Çarpanlama | 5 * 5 = 25 | __mul |
/: | Bölüm | 10 / 5 = 2 | __div |
// | Zemin Bölümü | 10 // 4 = 2-10 // 4 = -3 | __idiv |
^: | Kümes | 2^4=16 | __pow |
% | Modül | % 13 7 = 6 | __mod |
- | Tekrarlanan Reddetme | -2 = 0 - 2 | __unm |
Kompozit Özellikleri
Bir karmaşık görevin sonucuna eşit bir değer ayarlamak için kullanabilirsiniz kompleman yöneticileri, ilk parametre'nin değerini değiştirmeyi sağlayan değişken'dir.
Bir kompleksi bir ödevde bir rastgele indeks oluşturursa, Luau, hem operasyon hem de atama için aynı indeksi kullanır.
Aşağıdaki örneklerde, local x = 3 'i varsayalım.
Operatör | Operasyon | Örnek | Yeni Değer x |
---|---|---|---|
⇒ | Ek | x + 2 | 5 |
anneler | Tersyüz | x=-2 | 1. |
*) | Çarpanlama | x* 2 | 6 |
/=: | Bölüm | x /= 2 | 1.5 |
//=: | Zemin Bölümü | x //= 2 | 1. |
= | Modül | x%=2 | 1. |
^= | Kümes | x^ = 2 | 9 |
..= | Birleştirme | x..= "Dünya!" | “3 Dünyası!” |
Diğer
Diğer operatörler kaydırma ve uzunluk dahil olmak üzere toplu işaretleri içerir.
Operatör | Açıklama | Örnek | İlişkili metod |
---|---|---|---|
.. | İki yığınlayıcıyı birleştirir | print("Merhaba".. "Dünya") | __concat: |
# | Masa uzunluğu | Eğer tableVar = 1, 2, 3 , ise #tablVar == 3 . | __len |