Junior
Koje funkcije opsega u Kotlinu poznajete?
sobes.tech АИ
Одговор од АИ
let: Izvršava blok koda na objektu i vraća rezultat poslednje izraza. Često se koristi za sigurne pozive metoda na nullable objektima.run: Ima dve varijante:- Kao proširajuća funkcija: Izvršava blok koda na objektu (
this) i vraća rezultat poslednje izraza. - Kao samostalna funkcija: Izvršava blok koda bez primaoca i vraća rezultat poslednje izraza.
- Kao proširajuća funkcija: Izvršava blok koda na objektu (
with: Izvršava blok koda na datom objektu-prijemniku i vraća rezultat poslednje izraza.apply: Izvršava blok koda na objektu (this) i vraća sam objekat. Često se koristi za konfiguraciju svojstava objekta.also: Izvršava blok koda na objektu (it) i vraća sam objekat. Koristi se za sporedne radnje na objektu.
// Primer korišćenja let
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // Vraća dužinu niza
} // length == 6
// Primer korišćenja run kao proširene funkcije
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// Primer korišćenja run kao samostalne funkcije
val result = run {
// Bez primaoca
println("Pokretanje bloka")
1 + 2 // Vraća 3
} // result == 3
// Primer korišćenja with
val configuration = configureUsing {
// this - objekat prosleđen u 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
}
// Primer korišćenja apply
val person = mutableListOf<String>().apply {
// this == lista
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// Primer korišćenja also
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == lista
println("Obrada liste: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]