İçeriğe geç

Swift #2 – optional & non-optional

Optional

Optional, bir değişken tanımlarken değişkenin tipini örtülü olarak atamamızı sağlar.

Aşağıdaki kodda normal şartlarda değişkeni tanımlarken :Int şeklinde değişkenin tipini belirtmek zorunda değiliz. Fakat değişkene bir değer ataması yapmamız gerekiyor aksi taktirde uygulamamız bize hata verecektir.

var number: Int

print(number)

Eğer değişkeni tanımlarken tip adının sonuna ? işaretini eklersek değişkenimiz artık opsiyonel olacaktır ve boş olması durumunda default olarak nil değerini döndürecektir.

var number: Int?

print(number)

//output nil

Ayrıca değişkenimizi optional olarak tanımlayıp bir değer ataması yaptığımızda aslında değişkenimizi bir kutu içerisine alıyormuşuz gibi düşünebiliriz. Değişkenimizi kullanabilmek için kutudan çıkarmamız gerek. Bunun için bir kaç yöntem bulunmaktadır.

var number: Int? = 5

print(number)

//output Optional(5)

1- Değişkenimizi kullanacağımız yerde sonuna ! (ünlem işareti) ekleyebiliriz.

var number: Int? = 5

print(number!)

//output 5

2- Bir önceki konumda bahsettiğim if let ve guard let yapıları ile değişkenimizi kutudan çıkartabiliriz.

let number : Int? = 5
if let newNumber = number {
    print(newNumber)
}

//output 5
let number : Int? = 5
guard let newNumber = number else {
  return
}
print(newNumber)

//output 5

3- Bir diğer yöntem ise değişkenimizi kullanırken ?? operatörü ile varsayılan değer ataması yapabiliriz. Bu yapı değişkenimizin değerini değiştirmez. Fakat değişkenimizin nil gelmesi durumunda kullanılacak bir değer belirtebiliriz.

let number : Int? = 5

print(number ?? 0)

//output 5

non-optional

non-optional değişkenler optional işaretini kullanmadan direkt tip belirttiğimiz veya tip belirtmeden direkt değer atamasını yaptığımız değişkenlerdir.

var number : Int = 5 //non-optional
var name = "Bahri" //non-optional

print(number, name)

non-optional olarak değişken tanımlarken başlangıç değerlerini vermek zorundayız.

Kategori:IOS Developer YolculuğuSwift

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.