Junior
Ce funcții de domeniu în Kotlin cunoști?
sobes.tech AI
Răspuns de la AI
let: Execută un bloc de cod pe un obiect și returnează rezultatul ultimei expresii. Este frecvent utilizat pentru apeluri sigure de metode pe obiecte nullable.run: Are două variante:- Ca funcție de extensie: Execută un bloc de cod pe obiectul (
this) și returnează rezultatul ultimei expresii. - Ca funcție independentă: Execută un bloc de cod fără receptor și returnează rezultatul ultimei expresii.
- Ca funcție de extensie: Execută un bloc de cod pe obiectul (
with: Execută un bloc de cod pe un obiect receptor furnizat ca argument și returnează rezultatul ultimei expresii.apply: Execută un bloc de cod pe un obiect (this) și returnează obiectul în sine. Este frecvent utilizat pentru configurarea proprietăților obiectului.also: Execută un bloc de cod pe un obiect (it) și returnează obiectul în sine. Este utilizat pentru acțiuni secundare asupra obiectului.
// Exemplu de utilizare let
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // Returnează lungimea șirului
} // length == 6
// Exemplu de utilizare run ca extensie
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// Exemplu de utilizare run ca funcție independentă
val result = run {
// Fără receptor
println("Executarea unui bloc")
1 + 2 // Returnează 3
} // result == 3
// Exemplu de utilizare with
val configuration = configureUsing {
// this - obiectul transmis în 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
}
// Exemplu de utilizare apply
val person = mutableListOf<String>().apply {
// this == listă
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// Exemplu de utilizare also
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == listă
println("Procesare listă: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]