Swift Dersleri – 3 – Bool/Tuple

Merhaba.

Daha önce 1. ve 2. bölümlerini paylaştığım Swift derslerinin 3. bölümüyle karşınızdayım. İkinci bölümde başladığım değişkenler konusunda şimdi sıra Bool ve Tuple’a geldi.

Bool

Programlamada mantıksal değerler olan Boolean değerler Swift’te Bool ile tanımlanır. Alabileceği değerler true veya false.

let portakalTuruncudur = true
let limonTatlidir = false

if portakalTuruncudur {
    print("Evet portakal turuncudur.")
} else {
    print("Hayır turuncu değil.")
}
//"Evet portakal turuncudur."

Yukarıda değişken tanımlarken, değişkenin tiplerini belirtmedim. Swift’in Type Inference özelliği sayesinde Bool olarak tanımlandı. Aşağıdaki örnekte de benzer bir tanımlama yaptım. Ancak Swift’in Type Safe olması bizi olası bir hatadan kurtarmış oldu. Bu çeşit tanımlama sadece Bool tipler için kullanılabilir.

let i = 1

if i {
    // Swift type safe olduğundan kodu derlemeyecek. 
}

Tuple

Tuple, birden fazla değeri tek bir değişken içinde saklamamıza imkan verir. Ayrıca içinde tutulan değerlerin aynı tipte olmasına gerek yoktur.

let http404Error = (404, "Not Found")
// http404Error değişkeninin tipi (Int, String)

Yukarıdaki örnekte olduğu gibi Int ve String gibi birbirinden farklı tipleri tek değişken içinde gruplayabildik. Bu gruplamanın bir sınırı olmadığından (Bool, String, Int, Bool, String) gibi uzun bir tuple değerde oluşturabiliriz. Tuple tipi genellikle fonksiyonlarda işlem sonunda geri döndürülen değer olarak kullanılır.

Tanımladığımız değişkenin içindeki değerleri farklı değişkenlere atamamız mümkün.

let (statusCode, statusMessage) = http404Error
print("Status code değeri \(statusCode)")
// "404"
print("Status message değeri \(statusMessage)")
// "Not Found"

Tuple içinde sadece belirli bir değere erişmek istersek:

let (justTheStatusCode, _) = http404Error
print("Status code değeri \(justTheStatusCode)")
// Prints "The status code is 404"

Yukarıdakine alternatif olarak:

print("Status code: \(http404Error.0)")
// "404"
print("Status message: \(http404Error.1)")
// "Not Found"

Tuple oluştururken değişken adı vererek de tanımla yapabiliriz.

let http200Status = (statusCode: 200, description: "OK")

Bu şekilde tuple içindeki değişkenlere de adıyla erişmemiz mümkün hale geldi.

print("The status code is \(http200Status.statusCode)")
// "200"
print("The status message is \(http200Status.description)")
// "OK”

Type Safety ve Type Inference

Daha önce bahsettiğim gibi Swift type-safe dildir. Bunun anlamı programlama dili programcıyı yazım sırasında değişken tiplerini açıkça belirtmeye iter. Örneğin String değer gereken bir değişkene Int değer veremezsiniz.

Bu noktada Swift’te değişkenler için tip belirtme zorunluluğu bulunmuyor. Type Inference denen kavram ile derleme aşamasında değişkenin tipi otomatik olarak tanımlanabilir. Böylece kod yazımı, C ve Objective-C’ye oranla daha kolaydır.

Type Aliases

Bu kavram, mevcut tiplere alternatif isimlendirme yapmamıza olanak verir. Genel olarak kod okunabilirliğini arttırmaya yarar. Bir bakıma takma ad olarak düşünebilirsiniz.

typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min
// maxAmplitudeFound değeri artık 0

Bir sonraki yazıda Swift’in belki de kalbi diyebileceğim Optional kavramına değineceğim.

iyi okumalar.

Leave a Reply

Your email address will not be published. Required fields are marked *