Junior
Welke scope-functies in Kotlin ken je?
sobes.tech AI
Antwoord van AI
let: Voert een codeblok uit op een object en geeft het resultaat van de laatste uitdrukking terug. Wordt vaak gebruikt voor veilige methodenaanroepen op nullable objecten.run: Heeft twee varianten:- Als extensiefunctie: Voert een codeblok uit op het object (
this) en geeft het resultaat van de laatste uitdrukking terug. - Als zelfstandige functie: Voert een codeblok uit zonder receiver en geeft het resultaat van de laatste uitdrukking terug.
- Als extensiefunctie: Voert een codeblok uit op het object (
with: Voert een codeblok uit op een gegeven receiver-object en geeft het resultaat van de laatste uitdrukking terug.apply: Voert een codeblok uit op een object (this) en geeft het object zelf terug. Wordt vaak gebruikt voor het configureren van eigenschappen.also: Voert een codeblok uit op een object (it) en geeft het object zelf terug. Wordt gebruikt voor bijwerkingen op het object.
// Voorbeeld van gebruik van let
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // Geeft de lengte van de string
} // length == 6
// Voorbeeld van gebruik van run als extensiefunctie
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// Voorbeeld van gebruik van run als zelfstandige functie
val result = run {
// Zonder receiver
println("Een blok wordt uitgevoerd")
1 + 2 // Geeft 3
} // result == 3
// Voorbeeld van gebruik van with
val configuration = configureUsing {
// this - object dat wordt doorgegeven aan 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
}
// Voorbeeld van gebruik van apply
val person = mutableListOf<String>().apply {
// this == lijst
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// Voorbeeld van gebruik van also
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == lijst
println("Verwerking lijst: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]