Swift Lazy Belirteci

Merhabalar, Swift programlama dilinde bulunan lazy belirticinin kullanımından bahsedeceğim.


Lazy” kelimesi İngilizce’de tembel, yavaş veya uyuşuk anlamlarına gelmektedir. Swift programlamada lazy ön ekini alan değişkenler; kullanılacağı veya çalıştığı ana kadar değerleri hesaplanmaz.

lazy belirteci, var anahtar kelimesiyle beraber kullanıldığında let anahtar kelimesiyle birlikte kullanılmaz. Sabit ifadeler çağrılmadan önce her zaman bir başlangıç değeri istedikleri için lazy ile beraber kullanılmazlar.

lazy belirtecini kullanırken aşağıdaki maddelere dikkat etmemiz gerekiyor :

  • lazy sadece değişkenlerle kullanılır. Sabitlerle kullanılmaz.
  • Computed Property yani Hesaplanmış Özellikle beraber kullanılmazlar. Hesaplanmış özelliklerde erişimlerde mutlaka bir değeri geriye döndürür.

Swift Lazy Örnekleri

2 adet örnek yapacağız. Öncelikle Computed Property örneği yaparak lazy’nin kullanılmayacağını göstereceğim.

lazy kullanılmadan önceki hali

class Daire{

  var yaricap : Double = 0

  var cevre : Double{

    return Double.pi * 2 * yaricap
  }
}

var daireCevresi = Daire()
daireCevresi.yaricap = 5
print("Daire'nin cevresi : \(daireCevresi.cevre)")
Daire'nin cevresi : 31.41592653589793

lazy kullanıldaktan sonraki hali

class Daire{

  var yaricap : Double = 0

 lazy var cevre : Double{

    return Double.pi * 2 * yaricap
  }
}

var daireCevresi = Daire()
daireCevresi.yaricap = 5
print("Daire'nin cevresi : \(daireCevresi.cevre)")

‘lazy’ must not be used on a computed property hatası vererek lazy’nin hesaplanmış özellikle beraber kullanılmayacağını deneyimledik.


2.örneğimizdeyse KahveYap adlı bir class içinde lazy kullanımını öğreneceğiz.

lazy kullanılmadan önceki durum

class KahveYap{

  init(){

    print("Kahveniz yapılıyor.")
    print("Kahveniz hazır.")
  }
}

class Kafe{

  var musteri = KahveYap()

  init(){

    print("Kafeye giriyorsunuz.")
  }
}

print("Kafenin durumu : Musteriyi geliyor")
Kafe()
Kafenin durumu : Musteriyi geliyor
Kahveniz yapılıyor.
Kahveniz hazır.
Kafeye giriyorsunuz.

lazy kullanıldıktan sonraki durum

class KahveYap{

  init(){

    print("Kahveniz yapılıyor.")
    print("Kahveniz hazır.")
  }
}

class Kafe{

  lazy var musteri = KahveYap()

  init(){

    print("Kafeye giriyorsunuz.")
  }
}

print("Kafenin durumu : Musteriyi geliyor")
Kafe()
Kafenin durumu : Musteriyi geliyor
Kafeye giriyorsunuz.

Lazy ön ekini kullanarak değişkeni çağırdığımız anda yükleme yapmış oldu ve performans açısındanda uygulamaya yararı oldu.


Gelecek yazılarda görüşünceye dek kendinize dikkat edin 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir