Junior
Kotlin'de hangi kapsam fonksiyonlarını biliyorsunuz?
sobes.tech yapay zeka
AI'dan gelen yanıt
let: Bir nesne üzerinde kod bloğu çalıştırır ve son ifadenin sonucunu döndürür. Null olabilen nesnelerde güvenli çağrılar yapmak için sıkça kullanılır.run: İki varyantı vardır:- Uzantı fonksiyonu olarak: Nesne (
this) üzerinde kod bloğu çalıştırır ve son ifadenin sonucunu döndürür. - Bağımsız fonksiyon olarak: Bağlam olmadan kod bloğu çalıştırır ve son ifadenin sonucunu döndürür.
- Uzantı fonksiyonu olarak: Nesne (
with: Bir nesne üzerinde kod bloğu çalıştırır ve son ifadenin sonucunu döndürür.apply: Bir nesne (this) üzerinde kod bloğu çalıştırır ve nesneyi kendisini döndürür. Özelliklerin yapılandırılmasında sıkça kullanılır.also: Bir nesne (it) üzerinde kod bloğu çalıştırır ve nesneyi kendisini döndürür. Yan etkiler için kullanılır.
// let kullanım örneği
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // String uzunluğunu döndürür
} // length == 6
// run uzantı fonksiyonu olarak kullanım örneği
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// bağımsız run fonksiyonu olarak kullanım örneği
val result = run {
// Receptor olmadan
println("Bir blok çalıştırılıyor")
1 + 2 // 3 döner
} // result == 3
// with kullanımı
val configuration = configureUsing {
// this - configureUsing'e geçirilen nesne
width = 100
height = 200
}
fun configureUsing(builder: ScopeExample.() -> Unit): ScopeExample {
val example = ScopeExample()
example.builder()
return example
}
class ScopeExample {
var width: Int = 0
var height: Int = 0
}
// apply kullanımı
val person = mutableListOf<String>().apply {
// this == liste
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// also kullanımı
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == liste
println("Liste işleniyor: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]