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ı |