Sobes.tech
Middle

Kotlin'de let, run, also ve apply genişletme fonksiyonları arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

let: Bir kapanış fonksiyonunu bir nesne üzerinde çağırır ve kapanışın sonucunu döner. Nesneyi lambda ifadesinde (it) argüman olarak kullanmaya olanak tanır. Nullable nesnelerle çalışmak için uygundur.

// let kullanım örneği
val nullableString: String? = "Hello"
val length = nullableString?.let {
    // it - null olmayan bir String
    it.length
}

run: Bir nesne üzerinde kod bloğu çalıştırır ve bloğun sonucunu döner. Blok içinde nesne this olarak erişilebilir. Nesne başlatmak ve metod çağırmak için kullanışlıdır.

// run kullanım örneği
val result = buildString {
    // this - StringBuilder
    append("Start\n")
    append("Middle\n")
}.run {
    // this - String
    uppercase()
}

also: Bir nesne üzerinde kapanış çağırır ve nesneyi geri döner. Nesne üzerinde ek işlemler (örneğin, loglama veya yapılandırma) yapmak için kullanılır, nesneyi değiştirmez.

// also kullanım örneği
val list = mutableListOf("a", "b", "c").also {
    // it - MutableList
    println("Liste oluşturuldu: $it")
}

apply: Bir nesne üzerinde kapanış çağırır ve nesneyi geri döner. Blok içinde nesne this olarak erişilebilir. Nesnenin özelliklerini ayarlamak için uygundur.

// apply kullanım örneği
val textView = TextView(context).apply {
    // this - TextView
    text = "Merhaba, dünya!"
    textSize = 16f
    setTextColor(Color.BLACK)
}

Ana farklar:

Fonksiyon Nesneye nasıl erişilir Ne döner Tipik kullanım
let it Lambda sonucu Nullable nesneler, dönüşüm
run this Lambda sonucu Nesne başlatma ve metod çağrısı
also it Nesne kendisi Ek işlemler (yan etkiler)
apply this Nesne kendisi Özellik ayarı