Skip to content

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"