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.
- Jako rozšiřující funkce: Spustí blok kódu na objektu (
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]