Funkcje i lambdy
Proszę definiować funkcje z parametrami i typami zwracanymi, używać argumentów domyślnych i nazwanych oraz pisać zwięzłe wyrażenia lambda.
Funkcje i lambdy to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 3 lekcji w sumie.
Po co funkcje?
Funkcje pozwalają napisać blok kodu raz i używać go w dowolnym miejscu.
- Ograniczają powielanie kodu
- Ułatwiają czytanie i testowanie kodu
- Dzielą duże problemy na mniejsze części
W Kotlinie funkcje są elementami pierwszej klasy — można przechowywać je w zmiennych i przekazywać dalej.
Podstawowa składnia funkcji
Funkcja w Kotlinie używa słowa kluczowego fun:
fun greet(name: String): String {
return "Hello, $name!"
}
fun main() {
val msg = greet("Alice")
println(msg) // Hello, Alice!
println(greet("Bob")) // Hello, Bob!
}Funkcje z pojedynczym wyrażeniem
Gdy ciało funkcji jest pojedynczym wyrażeniem, możesz użyć = i pominąć nawiasy klamrowe oraz return:
fun square(n: Int): Int = n * n
fun add(a: Int, b: Int) = a + b // type inferred
fun main() {
println(square(5)) // 25
println(add(3, 7)) // 10
}Argumenty domyślne i nazwane
Funkcje w Kotlinie obsługują domyślne wartości parametrów — nie trzeba tworzyć przeciążeń:
- Domyślny:
fun greet(name: String = "World") - nazwany: wywołaj funkcję za pomocą
greet(name = "Alice"), aby pominąć kolejność pozycyjną
Argumenty domyślne i nazwane w działaniu
Argumenty domyślne pomagają zachować przejrzystość interfejsu API:
fun buildProfile(
name: String,
age: Int = 0,
role: String = "User"
): String {
return "$name | age=$age | $role"
}
fun main() {
println(buildProfile("Alice"))
println(buildProfile("Bob", age = 30))
println(buildProfile("Carol", 25, "Admin"))
}Czym są lambdy?
Lambda to funkcja anonimowa — funkcja bez nazwy.
- Składnia:
{ params -> body } - Przechowywanie w zmiennej:
val double = { x: Int -> x * 2 } - Przekazywanie do innej funkcji jako argumentu
Lambdy są powszechnie używane na Androidzie: w detektorach kliknięć, transformacjach list i korutynach.
Przykłady lambd
Przechowuj i wywołuj lambdy tak jak zwykłe funkcje:
fun main() {
val double = { x: Int -> x * 2 }
println(double(4)) // 8
val add = { a: Int, b: Int -> a + b }
println(add(3, 5)) // 8
// Lambda with no params
val sayHi = { println("Hi!") }
sayHi() // Hi!
}Funkcje wyższego rzędu
Funkcja wyższego rzędu przyjmuje inną funkcję jako parametr albo ją zwraca.
Biblioteka standardowa Kotlina jest ich pełna: filter, map, forEach.
Składnia z lambdą na końcu: gdy ostatnim argumentem jest lambda, przenieś ją poza nawiasy.
Składnia lambdy na końcu
Przekaż lambdę jako ostatni argument poza nawiasami:
fun applyTwice(n: Int, operation: (Int) -> Int): Int {
return operation(operation(n))
}
fun main() {
val result = applyTwice(3) { x -> x * 2 }
println(result) // 12 (3 * 2 = 6, 6 * 2 = 12)
// 'it' is the implicit single parameter
val doubled = applyTwice(5) { it + it }
println(doubled) // 20
}Szybkie sprawdzenie
Spójrz na ten kod. Co zostanie wypisane?
val triple = { x: Int -> x * 3 }
println(triple(4))
Podsumowanie: funkcje i lambdy
Dowiedziałeś się:
fundefiniuje funkcję z parametrami i typem zwracanej wartości- Funkcje z pojedynczym wyrażeniem używają skróconej składni z
= - Argumenty domyślne i nazwane zastępują przeciążenia
- Lambdy to funkcje anonimowe:
{ params -> body } - Funkcje wyższego rzędu przyjmują funkcje jako parametry
Dalej: sterowanie przebiegiem programu za pomocą warunków i pętli.
Często zadawane pytania
Czy lekcja „Funkcje i lambdy” jest bezpłatna?
Tak — pełny tekst „Funkcje i lambdy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 3 lekcji w sumie.
Co nauczysz się w „Funkcje i lambdy”?
Proszę definiować funkcje z parametrami i typami zwracanymi, używać argumentów domyślnych i nazwanych oraz pisać zwięzłe wyrażenia lambda. Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Android Academy?
Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.
Ile czasu zajmuje lekcja „Funkcje i lambdy”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?
Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Zmienne i typy danych
- Funkcje i lambdy
- Przepływ sterowania