Middle
Jak działają wyrażenia lambda w języku programowania Kotlin?
sobes.tech AI
Odpowiedź od AI
Wyrażenia lambda w Kotlinie reprezentują funkcje anonimowe. Mogą być przekazywane jako argumenty lub przechowywane w zmiennych.
Kluczowe punkty:
- Składnia: Nawiasy
{}. Parametry są wskazywane przed strzałką->, ciało funkcji po niej. Jeśli nie ma parametrów, strzałka jest opcjonalna. - Domyślna nazwa parametru
it: Jeśli lambda ma jeden parametr, nie trzeba go deklarować jawnie, będzie dostępny pod nazwąit. - Wartość zwracana: Ostatnie wyrażenie w ciele lambdy jest jej wartością zwracaną.
- Zamknięcia (Closures): Lambdy mogą uzyskiwać dostęp i modyfikować zmienne z zakresu, w którym zostały zdefiniowane.
Przykłady:
// Lambda bez parametrów
val hello = { println("Hello, world!") }
hello() // Wywołanie lambdy
// Lambda z jednym parametrem (jawne deklarowanie)
val square = { number: Int -> number * number }
println(square(5))
// Lambda z jednym parametrem (użycie 'it')
val increment = { it + 1 }
println(increment(10))
// Lambda z wieloma parametrami
val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3))
// Lambda jako argument funkcji wyższego rzędu
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
println(operate(4, 5, { x, y -> x * y })) // Przekazanie lambdy
Porównanie z funkcjami anonimowymi (bardziej szczegółowe):
| Cecha | Wyrażenie lambda | Funkcja anonimowa |
|---|---|---|
| Składnia | {} |
fun (...) |
| Wartość zwracana | Ostatnie wyrażenie | Jawne return |
return wewnątrz |
Zwraca z funkcji nadrzędnej (retour non-lokalny) | Zwraca z funkcji anonimowej (lokalny return) |
Użycie it |
Tak (dla jednego parametru) | Nie |
Lambdy są szeroko stosowane w Kotlinie, szczególnie z funkcjami wyższego rzędu (map, filter, forEach itd.), aby tworzyć zwięzły i wyrazisty kod. Kompilator optymalizuje ich użycie.