Junior
Kokias matymo funkcijas žinote Kotlin?
sobes.tech AI
Atsakymas iš AI
let: Atlieka kodo bloko vykdymą objektui ir grąžina paskutinės išraiškos rezultatą. Dažnai naudojamas saugiam metodų iškvietimui nullable objektuose.run: turi du variantus:- kaip išplėtimą: atlieka kodo bloko vykdymą objekte (
this) ir grąžina paskutinės išraiškos rezultatą. - kaip savarankišką funkciją: atlieka kodo bloką be priimančiojo ir grąžina paskutinės išraiškos rezultatą.
- kaip išplėtimą: atlieka kodo bloko vykdymą objekte (
with: atlieka kodo bloko vykdymą priimančiojo objekto ir grąžina paskutinės išraiškos rezultatą.apply: atlieka kodo bloką objekte (this) ir grąžina patį objektą. Dažnai naudojamas objekto savybių konfigūravimui.also: atlieka kodo bloką objekte (it) ir grąžina patį objektą. Naudojamas šalutiniams veiksmams atlikti.
// `let` pavyzdys
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // eilutės ilgis
} // length == 6
// `run` kaip išplėtimo pavyzdys
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// `run` kaip savarankiška funkcija pavyzdys
val result = run {
// be priimančiojo
println("Running a block")
1 + 2 // grąžina 3
} // result == 3
// `with` pavyzdys
val configuration = configureUsing {
// this - perduotas objektas
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` pavyzdys
val person = mutableListOf<String>().apply {
// this == sąrašas
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// `also` pavyzdys
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == sąrašas
println("Processing list: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]