Sobes.tech
Junior

Jaké funkce oblasti viditelnosti v Kotlinu znáte?

sobes.tech AI

Odpověď od AI

  • let: Spustí blok kódu na objektu a vrátí výsledek posledního výrazu. Často se používá pro bezpečné volání metod na nullable objektech.
  • run: Má dvě varianty:
    • Jako rozšiřující funkce: Spustí blok kódu na objektu (this) a vrátí výsledek posledního výrazu.
    • Jako samostatná funkce: Spustí blok kódu bez příjemce a vrátí výsledek posledního výrazu.
  • with: Spustí blok kódu na předaném objektu příjemci a vrátí výsledek posledního výrazu.
  • apply: Spustí blok kódu na objektu (this) a vrátí samotný objekt. Často se používá pro konfiguraci vlastností objektu.
  • also: Spustí blok kódu na objektu (it) a vrátí samotný objekt. Používá se pro vedlejší akce na objektu.
// Příklad použití let
val name: String? = "Kotlin"
val length = name?.let {
    // this == null
    // it == "Kotlin"
    it.length // Vrací délku řetězce
} // length == 6

// Příklad použití run jako rozšiřující funkce
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
    listOf(first(), last())
    // this == numbers
} // firstAndLast == [1, 3]

// Příklad použití run jako samostatné funkce
val result = run {
    // Bez příjemce
    println("Běží blok")
    1 + 2 // Vrací 3
} // result == 3

// Příklad použití with
val configuration = configureUsing {
    // this - objekt předaný do configureUsing
    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
}

// Příklad použití apply
val person = mutableListOf<String>().apply {
    // this == seznam
    add("Alice")
    add("Bob")
} // person == ["Alice", "Bob"]

// Příklad použití also
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
    // it == seznam
    println("Zpracování seznamu: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]