İçeriğe geç

Swift #8 – extension

Extension kelime anlamı olarak “genişletme”, “ilave” veya “ekleme” olarak tanımlanmaktadır. Swift’de extensionlar aslında var olan struct, class veya protocollerimize yeni nesneler ekleme için kullanılır.

class Apple { 

  var name : String 

  init(name: String) { 
    self.name = name 

  } 
} 

extension Apple { 

  func sendMessage() -> String{ 
    return "Welcome! \(self.name)" 
  } 
} 

let apple = Apple(name: "Bahri") 

print(apple.sendMessage()) 

Yukarıdaki örnekte görüldüğü gibi Apple adında bir sınıf oluşturduk ve içerisinde “name” adında string bir değişken tanımladık. Daha sonra sınıfımıza ait bir extension oluşturarak içerisinde “sendMessage” adında bir fonksiyon tanımladık. Tanımlama işleminden sonra sınıfımızın örneğini oluşturduğumuz her yerde artık “sendMessage” fonksiyonuna erişim sağlayabiliriz. Şimdi buradaki kafa karıştırıcı durum neden direkt olarak sendMessage fonksiyonumuzu class içerisinde tanımlamadık.

Aslında extensionlar daha düzenli kod yazmak için kullanılır. Birçok fonksiyonu ve değişkeni tek bir dosya içerisinde yazmaktansa daha düzenli bir yapıda birden fazla dosya içerisinde extension ile tanımlamalar gerçekleştirebiliriz. 

Fakat swift tarafında extensionların tek kullanılma amacı sadece kendi yazdığımız class veya structlara erişmek değildir. 

extension Int { 

  var square: Int { 
    return self * self 
  } 
} 

var number : Int = 10 

print(number.square) //100 

Yukarıdaki örnekte Int türü için bir extension tanımladık ve tüm integer değerlerin karesine ulaşmak için square adında bir property tanımladık. Böylece Int tipinde oluşturduğumuz bir değişkeni square propertysini çağırarak karesini elde edebiliriz. Burada unutulmaması gereken şey square işleminden sonra değişkenin değeri değişmez. 

Ayrıca extensionlar ile classımıza ait bir den fazla init metodu yazabiliriz. 

struct Car { 

   var power: Int = 0 
   var speed: Int = 0 

} 

extension Car { 

    init(power: Int) { 
    } 

    init(array: [Car]) { 
    } 
} 

 

Kategori:IOS Developer YolculuğuSwift

İlk Yorumu Siz Yapın

Bir cevap yazın

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