Operatörler
Operatörler çeşitli kontrolleri yapmak için kullanılır. Hatta bazıları aynı zamanda method olarak çalışır. Bazı operatörlerin birden farklı işlemi vardır. Örneğin + hem matematik işlemi olan toplama için hem de pozitif değer kontrolü için kullanılabilir.
| Operatör | Açıklama | Method mu? |
|---|---|---|
| :: | İki tane iki nokta. Scope resolution anlamındadır. Class ve Modül konusunda detayları göreceğiz. | |
| [] | Referans, set | Evet |
| []= | Referans, set | Evet |
| ** | Üssü, kuvveti | Evet |
| + | Pozitif | Evet |
| - | Negatif | Evet |
| ! | Mantıksal uzlaşma | |
| ~ | Tamamlayıcı | Evet |
| * | Çarpma | Evet |
| / | Bölme | Evet |
| % | Modülo (Kalan) | Evet |
| + | Ekleme | Evet |
| - | Çıkartma | Evet |
| << | Sola kaydır | Evet |
| >> | Sağa kaydır | Evet |
| & | Bit seviyesinde and (Ve) işlemi | Evet |
| | | Bit seviyesinde or (Veya) işlemi | Evet |
| ^ | Bit seviyesinde exclusive or (Veya'nın tersi gibi) işlemi | Evet |
| > | Büyüktür | Evet |
| >= | Büyük ve eşit | Evet |
| < | Küçüktür | Evet |
| <= | Küçük ve eşit | Evet |
| <=> | Eşitlik karşılaştırma operatörü (Spaceship yani uzay gemisi ) | Evet |
| == | Eşitlik | Evet |
| === | Denklik | Evet |
| != | Eşit değil | |
| !~ | Yakalanmayan (not match) | |
| =~ | Yakalanan (match) | Evet |
| && | Mantıksal ve (and) | |
| || | Mantıksal veya (or) | |
| .. | Range'i kapsayan | Evet |
| ... | Range'i kapsamayan | |
| ? : | Ternary | |
| = | Atama | |
| += | Arttırma ve atama | |
| -= | Eksiltme ve tama | |
| *= | Çarpma ve atama | |
| /= | Bölme ve atama | |
| %= | Modülo ve atama | |
| **= | Üssü ve atama | |
| <<= | Bit seviyesinde sola kaydırma ve atama | |
| >>= | Bit seviyesinde sağa kaydırma ve atama | |
| &= | Bit seviyesinde and ve atma | |
| |= | Bit seviyesinde or ve atama | |
| ^= | Bit seviyesinde eor ve atama | |
| &&= | Mantıksal and ve atama | |
| ||= | Varlık ataması (Existential Operator) |
İlk bakışta insanın aklını durduran bir sürü garip işaretler bunlar değil mi? Hemen örneklerle pekiştirelim.
a = []
a.class # => Array
a.length # => 0
[]= Kullanım Örneği
a = [] # Bu bir dizi / Array
a.[]=5,"Merhaba" # 0 indekli, 5.eleman Merhaba olsun
p a # [nil, nil, nil, nil, nil, "Merhaba"]
Unary Operatörleri
Unary demek, +=, -=, *= gibi işlemleri yaptığımız operatörler. Yani x+= 5 dediğimizde (x'in değerine 5 ekle ve sonucu tekrar x'e ata) aslında Unary operatörü kullanmış oluruz.
Keza, aşağıdaki örnekteki gibi kullanımlarda ek fayda sağlamış oluruz:
str = "Merhaba Dünya"
class String
def -@
reverse
end
end
p str # "Merhaba Dünya"
p -str # "aynüD abahreM"