Swift Programlama Dili ve Generic Yapısı



Merhaba arkadaşlar bugün yazımda Swift dilinde Generic tipinin ne işe yaradığını ve nerelerde kullanıldığını örneklerle elimden geldiğince anlatmaya çalışacağım. Generic kelimesinin Türkçe karşılığı genel olarak çevirilebilir. Aslında Swift'te oluşturulan mantık da tam olarak bu mesela elimizde sayıyı 1 artıran girdi olarak Integer değer alan bir fonksiyonumuz olsun. Aşağıdaki fonksiyon bize sonuç olarak 16 sayısını döndürür. 

1
2
3
4
func intAdder(number:Int) -> Int {
    return number+1
}
intAdder(number: 15)

Aynı şekilde bu işlemi bir double ile yapmak istiyorsak aşağıdaki gibi bir fonksiyon oluşturup girdi olarak Double tipinde bir değişken vermeliyiz. Bu fonksiyon ise bize 16.2 yani Double türünde bir sonuç döndürür.

1
2
3
4
func doubleAdder(number:Double) -> Double {
return number+1
}
doubleAdder(number: 15.2)


Fakat bu Genericleri keşfeden abilerimiz demişler ki 'ya aynı işi yapan 2 farklı fonksiyon olmasına gerek yok biz bu fonksiyonları generic tipinde tanımlayalım kullanıcı ister Integer ister Double göndersin biz toplama işlemini yapalım yeterli' (örnekte toplama işlemi olduğu için tabii ki çarpma bölme ve diğer başka birçok işlem de generic yapısı kullanılarak yapılır) Gelin aşağıdaki "Generic" kodu inceleyelim.

1
2
3
4
5
func genericAdder<T:Strideable>(number:T) -> T {
    return number+1
}
genericAdder(number: 15)
genericAdder(number: 13.21)

Gördüğünüz gibi generic olarak tanımlanmış T değişkeni ister double ister Integer ister float tipinde olsun hepsinde toplama işlemini yapabiliyor. Strideable ise bu tip bir işlemde kullanacağınız protokol generic tipiyle birlikte kullanmanız gereken birçok farklı protokolden yalnızca birisi.

Özet olarak Generic yapısı bize gelen girdilere karşı esnek bir yapı sunmaktadır. Fonksiyona gönderilen verinin tipi değil fonksiyonun yaptığı iş önemlidir.

Yorumlar

Bu blogdaki popüler yayınlar

Video Boyutu Hesaplama

Linux Kullanıcı Ekleme Silme ve Parola Belirleme

Swift Programlama Dili ve Protokoller

Hadoop Kurulumu

Linux Dosya İzinleri

Linux Önemli Dizinler

Temel Linux Komutları

Chroma Subsampling (Renk Alt Örneklemesi) veya 4:2:2 4:2:0