Kontrol akışları sayesinde farklı kod dalları oluşturarak farklı durumlar için işlemlerimizi değiştirebiliriz. Swift dilinde bunu yapmak için genellikle iki farklı yapı kullanılır: if ve switch.
Bir if döngüsü; üzerinde yazılan ifadelerin true (doğru) ya da false (yanlış) değerlerini almasına göre ifadeleri çalıştırır: Eğer döngüde yazılan ifade true değerine eşitse, o ifadenin yazılı olduğu aralıkta bulunan kodlar çalışır. Bunu nasıl yaptığını görmek için bu örneğe bakalım:
let sayi = 10
if sayi == 10 {
print("Merhaba, Dünya!")
}
Bu if döngüsünde, sadece sayi değerinin 10 olması durumunda ifade çalışacaktır. Değerimiz 11 olursa, çıktı olarak hiç bir şey alamayız. Peki diğer diğer bütün değerler için ekstra bir if döngüsü mü oluşturmalıyız? Tabii ki hayır. Bunun için else if döngüsünü (veya döngülerini) kullanabiliriz. Örneğin bunu 11 sayısı için yapalım.
let sayi = 10
if sayi == 10 {
print("Merhaba, Dünya!")
} else if sayi == 11 {
print("Merhaba, TurkishKit!")
}
Peki sadece bir ifadede birden fazla sayıyı kapsayacak hâle getiremez miyiz? Tabii ki getirebiliriz! Bunun için operatörleri kullanmamız gerekecek.
Öncelikle sayi değerinin sadece bir sayıya eşit olmasına gerek yok. İstersek o “==” operatörünü “>” operatörü ile değiştirerek, döngümüzü, sayi değeri 11'den büyük olduğunda ifademizin altındaki kodları çalıştıracak şekilde ayarlayabiliriz.
let sayi = 10
if sayi == 10 {
print("Merhaba, Dünya!")
} else if sayi > 11 {
print("Merhaba, TurkishKit!")
}
(Döngünüzdeki bütün ifadelerin farklı bir durumu teşkil etmesi oldukça önemlidir. Örneğin, üstteki örneğimizde bütün “==” operatörlerini “>” operatörüne çevirseydik, ikinci ifademiz hiç bir zaman çalışmayacaktı, çünkü if döngüsünde yazdığınız ifade doğruysa, döngünüz ondan sonraki diğer bütün ifadeleri göz ardı edecektir.)
Ayrıca, ifademizdeki koşulu biraz daha karmaşık hâle getirmek istiyorsak ve/veya operatörlerini kullanabiliriz. Örneğin ikinci ifademizdeki sayı skalasını kısaltmak için “ve” operatörünü kullanabiliriz.
let sayi = 10
if sayi == 10 {
print("Merhaba, Dünya!")
} else if sayi > 11 && sayi < 50 {
print("Merhaba, Adım Adım Kodla!")
}
Bu operatör sayesinde sayi değeri 50 olduğunda, ikinci ifademiz çalışmayacak. Peki o zaman, sayi değeri, birinci ve ikinci ifadelere uymayan “herhangi” bir sayı değeriyken (örneğin 1000) döngümüzde nasıl bir ifadede true değerini alabilir? Bunun cevabı tabii ki de else ifadesi! Eğer döngümüzde else yazan yeni bir ifade yazarsak, sayi değeri birinci ve ikinci ifadelerde false değerini döndüğü zaman, else ifadesinde true değerini dönerek o bölümde yazan kodları çalıştıracaktır.
let sayi = 10
if sayi == 10 {
print("Merhaba, Dünya!")
} else if sayi > 11 && sayi < 50 {
print("Merhaba, Adım Adım Kodla!")
} else {
print("Merhaba, Türkiye!")
}
Bir switch döngüsü; bir değeri dikkate alır ve birkaç olası eşleşme değeriyle karşılaştırır. Daha sonra başarılı bir şekilde eşleşen ilk ifadeyi temel alarak uygun bir kod bloğunu yürütür. Bunu nasıl yaptığını görmek için bu örneğe bakalım:
let karakter: Character = "a"
switch karakter {
case "a", "A":
print("A karakteri girildi.")
case "b", "B":
print("B karakteri girildi.")
case "c", "C":
print("C karakteri girildi.")
default:
break
}
Bu görmüş olduğunuz döngüde, dikkate alınan değer karakter değişkenidir. (Fark edeceğiniz üzere, o bir “Character” objesidir. Görüleceği üzere, bu tarz farklı objeleri de koşul ifadelerinde kullanabiliriz.)
Fark edeceğiniz üzere, döngümüzde yer alan her bir ayrı durumda birden fazla değer mevcut ve bu değerler birbirinden virgül işareti ile ayrılıyor. (Bu virgüller, “veya” operatörü ile aynı işi görürler.) Bunun anlamı, eğer durumlardaki değerlerden bir tanesi bile dikkate alınan değer ile aynıysa, o durumun içinde yazılmış kodlar çalışır.
default ifadesi ise if döngüsündeki else ile aynı işi görmektedir, ancak default ifadesinin yazılması zorunludur. Eğer bir switch döngüsünün ifadesinde kod yazmak istemiyorsanız, o ifadenin kod bölümüne “break” yazmalısınız.