Sobes.tech
Junior

Kotlin-də hansı sahə funksiyalarını bilirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

  • let: Bir obyekt üzərində kod blokunu icra edir və son ifadənin nəticəsini qaytarır. Null ola bilən obyektlərdə metodların təhlükəsiz çağırışları üçün tez-tez istifadə olunur.
  • run: İki variantı var:
    • Uzantı funksiyası kimi: Obyekt (this) üzərində kod blokunu icra edir və son ifadənin nəticəsini qaytarır.
    • Müstəqil funksiya kimi: Kontekst olmadan kod blokunu icra edir və son ifadənin nəticəsini qaytarır.
  • with: Verilmiş obyekt-rezident üzərində kod blokunu icra edir və son ifadənin nəticəsini qaytarır.
  • apply: Obyekt (this) üzərində kod blokunu icra edir və obyekti özü ilə qaytarır. Objekti konfiqurasiya etmək üçün tez-tez istifadə olunur.
  • also: Obyekt (it) üzərində kod blokunu icra edir və obyekti özü ilə qaytarır. Obəkt üzərində yan təsirlər üçün istifadə olunur.
// let istifadə nümunəsi
val name: String? = "Kotlin"
val length = name?.let {
    // this == null
    // it == "Kotlin"
    it.length // Sətirin uzunluğunu qaytarır
} // length == 6

// run uzantı funksiyası kimi istifadə nümunəsi
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
    listOf(first(), last())
    // this == numbers
} // firstAndLast == [1, 3]

// müstəqil run funksiyası kimi istifadə nümunəsi
val result = run {
    // Receptor olmadan
    println("Blok icra olunur")
    1 + 2 // 3 qaytarır
} // result == 3

// with istifadə nümunəsi
val configuration = configureUsing {
    // this - configureUsing-ə ötürülən obyekt
    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 istifadə nümunəsi
val person = mutableListOf<String>().apply {
    // this == siyahı
    add("Alice")
    add("Bob")
} // person == ["Alice", "Bob"]

// also istifadə nümunəsi
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
    // it == siyahı
    println("Siyahı işlənir: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]