Ruby diğer modern yazılım dillerine göre çok daha basit bir kontrol yapısına sahiptir. Açıklanan tüm ifadeler geriye bir değer döndürür. Bilinmesi gereken en önemli nokta; Ruby’ de nil ve false yanlış(false), geriye kalan her şey ise doğru(true) olarak değerlenir.
1) IF – ELSIF – ELSE Yapısı:
Öncelikle if, elsif ve else nedir bunlardan bahsedelim. IF kelime anlamı olarak şayet, eğer gibi manalara sahiptir, ELSE kelimesi ise bunların dışında anlamını taşır, ELSIF ise else if ifadesinin kısa hali yani if ve else kelimelerinin birleşimidir. Verilen durum if şartını sağlamıyor ancak elsif şartını sağlıyor olabilir. Eğer ki elsif kullanılmazsa bu durumu direkt else ile ifade ederiz. If-Elsif-Else yapısı şu şekilde kullanılır.
if koşul 1 durum1 elsif koşul 2 durum2 else durum3 end
Yapının kafamızda daha iyi oturması için bir örnekle inceleyecek olursak; Verilen bir sayının pozitif mi negatif mi olduğunu test eden kodu yazmayı deneyelim.
sayi = 13 if sayi < 0 #negatifse puts "Sayı negatif" elsif sayi > 0 # pozitifse puts "Sayı pozitif" else # geriye kalan tek durum sayı 0 ise puts "Sayı ne pozitif ne negatif" end
Yukarda kodun çıktısı verilen sayımız 13 olduğundan if şartını sağlamıyor ancak elsif şartını sağlayacak ve ekrana “Sayı pozitif” diye yazdıracaktır.
TERNARY YAPISI
Ternary yapısı if – else yapısının tek satıra optimize edilmesi durumudur. Mesela bir if – else durumu verelim ve bunu Ternary ile nasil ifade edebiliriz inceleyelim.
sayi = 10 if sayi % 2 == 0 sayi ** 2 else sayi ** 3 end
#=> 100
Çıktıdan da anlayacağımız gibi if ifadesindeki şart doğru olarak nitelenmiş ve if ifadesinin içerisindeki kod bloğu çalışmıştır. Yukardaki basit if -else yapısını tek satıra optimize edecek olursak;
sayi % 2 == 0 ? sayi ** 2 : sayi ** 3
şeklinde Ternary yapısı kullanabiliriz. Yani Ternary yapısının temeli şu şekildedir:
şart ? if durumu : else durumu
UNLESS YAPISI
Unless ifadesi Ruby’de if ifadesinin zıttı olarak kullanılır yani daha detaylı açıklarsak if ifadesi doğru(true) olan durumlarda çalışırken unless ifadesi yanlış(false) olan durumlarda çalışır.
Yukardaki örneği unless ile tekrar yazmayı deneyelim, bakalım nasıl bir sonuç çıkacak:
unless sayi % 2 == 1 sayi ** 2 else sayi ** 3 end
Yazmış olduğumuz bu kodun çıktısı şu şekilde olacaktır:
=> 100
CASE YAPISI
Ruby’de case yapısı if-elsif-else yapısına bir alternatiftir. Case yapısı bir dizi sözdizimini destekleyebilir. Case yapısının nasıl kullanıldığını gösteren bir kaynak kod yazalım ve kod üzerinde inceleme yapalım.
yas = 20 case yas when 15 then puts "yasiniz 20 den kucuk" when 20 then puts "yasiniz 20" when 25 then puts "yasiniz 20 den buyuk" end
Kodumuzun çıktısı ; => yasiniz 20 seklinde olucaktır.
DİPNOT : Else ifadesini case yapısı ile de kullanabiliriz. Bunu içeren bir örnek de verelim;
a = "kiraz" case a when "vanilya" then "bir baharat" when "ispanak" then "bir sebze" when "kiraz" then "bir meyve" else "belirlenemeyen bir sey" end
Kodumuzu çalıştırdığımızda a değişkeninde tuttuğumuz değer “kiraz” olduğu için case yapısı bize “bir meyve” değerini geri döndürecektir.