Kotlin’de Genişletme Fonksiyonları(Extension) ve Özellikleri(Properties)
Kotlin, nesneye yönelik programlama dilinin sağladığı birçok avantajı modern, fonksiyonel yaklaşımlarla birleştirir. Bu avantajlardan biri, genişletme fonksiyonları ve özelliklerin kullanımıdır. Bu blog yazısında, bu konseptleri detaylı bir şekilde ele alacağız.
Genişletme Fonksiyonları: Temel Tanım ve Kullanım
Genişletme fonksiyonları, var olan bir sınıfa yeni bir metod eklememizi sağlar. Bu metodlar, sınıfın orijinal tanımına dahil olmasa da, sınıfın bir örneği üzerinde çağrılabilir. İşte basit bir örneği:
fun String.sonKarakter(): Char {
return this[this.length - 1]
}
val selam = "Merhaba"
println(selam.sonKarakter()) // Output: a
Bu örnekte, String
sınıfına sonKarakter
adında bir genişletme fonksiyonu ekledik. Bu fonksiyon, bir stringin son karakterini döndürür.
İç İçe Genişletme Fonksiyonları
Genişletme fonksiyonları, iç içe kullanılabilir. Bir genişletme fonksiyonun içinde başka bir genişletme fonksiyonunu çağırmak mümkündür. İşte bir örneği:
fun String.sonKarakter(): Char {
return this[this.length - 1]
}
fun String.sonIkiKarakter(): String {
return "${this.sonKarakter()}${this[this.length - 2]}"
}
val selam = "Merhaba"
println(selam.sonIkiKarakter()) // Output: ab
Bu örnekte, sonIkiKarakter
genişletme fonksiyonu, sonKarakter
genişletme fonksiyonunu çağırır.
Genişletme Özellikleri: Temel Tanım ve Kullanım
Genişletme özellikleri, genişletme fonksiyonlarına benzer bir şekilde çalışır, ancak bir sınıfa yeni bir özellik eklerler. Bu yeni eklenen özellik, sınıfın bir örneği üzerinde çağrılabilir. İşte bir örneği:
val String.sonKarakter: Char
get() = this[this.length - 1]
val selam = "Merhaba"
println(selam.sonKarakter) // Output: a
Bu örnekte, String
sınıfına sonKarakter
adında yeni bir özellik ekledik. Bu özellik, bir stringin son karakterini döndürür.
İç İçe Genişletme Özellikleri
Genişletme özelliklerinin iç içe kullanımı da mümkündür. Bir genişletme özellik, başka bir genişletme özellik tarafından çağrılabilir. İşte bir örneği:
val String.sonKarakter: Char
get() = this[this.length - 1]
val String.sonIkiKarakter: String
get() = "${this.sonKarakter}${this[this.length - 2]}"
val selam = "Merhaba"
println(selam.sonIkiKarakter) // Output: ab
Bu örnekte, sonIkiKarakter
genişletme özelliği, sonKarakter
genişletme özelliğini çağırır.
Kotlin’in genişletme fonksiyonları ve özelliklerinin kullanımı, kodunuzun daha okunabilir ve modüler olmasını sağlar. Bu yaklaşım, özellikle mevcut sınıflara yeni işlevler ve özellikler eklerken, aşırı kalıtım yerine kompozisyon kullanmak isteyen geliştiriciler için yararlıdır.