Junior
Welche Gültigkeitsbereichsfunktionen in Kotlin kennen Sie?
sobes.tech KI
Antwort von AI
let: Führt einen Codeblock auf einem Objekt aus und gibt das Ergebnis des letzten Ausdrucks zurück. Wird häufig für sichere Methodenaufrufe an nullable Objekten verwendet.run: Hat zwei Varianten:- Als Erweiterungsfunktion: Führt einen Codeblock auf dem Objekt (
this) aus und gibt das Ergebnis des letzten Ausdrucks zurück. - Als eigenständige Funktion: Führt einen Codeblock ohne Empfänger aus und gibt das Ergebnis des letzten Ausdrucks zurück.
- Als Erweiterungsfunktion: Führt einen Codeblock auf dem Objekt (
with: Führt einen Codeblock auf einem übergebenen Empfängerobjekt aus und gibt das Ergebnis des letzten Ausdrucks zurück.apply: Führt einen Codeblock auf einem Objekt (this) aus und gibt das Objekt selbst zurück. Wird häufig zur Konfiguration von Eigenschaften verwendet.also: Führt einen Codeblock auf einem Objekt (it) aus und gibt das Objekt selbst zurück. Wird für Nebenwirkungen auf dem Objekt verwendet.
// Beispiel für die Verwendung von let
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // Gibt die Länge des Strings zurück
} // length == 6
// Beispiel für die Verwendung von run als Erweiterung
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// Beispiel für die Verwendung von run als eigenständige Funktion
val result = run {
// Ohne Empfänger
println("Ausführen eines Blocks")
1 + 2 // Gibt 3 zurück
} // result == 3
// Beispiel für die Verwendung von with
val configuration = configureUsing {
// this - das an configureUsing übergebene Objekt
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
}
// Beispiel für die Verwendung von apply
val person = mutableListOf<String>().apply {
// this == Liste
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// Beispiel für die Verwendung von also
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == Liste
println("Verarbeite Liste: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]