let, also i funkcje zakresu
Będzie Pan/Pani pracować z wartościami nullable.
let, also i funkcje zakresu to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 3 z 4. 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 4 lekcji w sumie.
Czym są funkcje zakresu
Funkcje zakresu pozwalają uruchamiać blok kodu w kontekście obiektu. Dzięki nim kod jest bardziej zwięzły, szczególnie w przypadku wartości dopuszczających null.
W tej lekcji skupimy się na funkcjach let i also, najbardziej przydatnych przy zapewnianiu bezpieczeństwa obsługi wartości null, oraz na ich związku z operatorem bezpiecznego wywołania.
Funkcja let
Funkcja let uruchamia blok i przekazuje do niego obiekt jako it. Zwraca wynik zwrócony przez blok.
Przydaje się do przekształcania wartości lub nadawania zakresu tymczasowej nazwie.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // prints: 6
}let a bezpieczeństwo wartości null
Połącz ?. z let, aby wykonać blok tylko wtedy, gdy wartość nie jest null. Blok uruchomi się raz, a wartość będzie dostępna jako it.
Jeśli wartość jest null, blok zostanie całkowicie pominięty.
fun main() {
val name: String? = "Ada"
name?.let {
println("Hello, " + it)
}
}Pomijanie wartości null
Gdy odbiorca jest null, ?.let nic nie robi. Blok nigdy się nie wykona.
Ten program niczego nie wypisuje, ponieważ name ma wartość null.
fun main() {
val name: String? = null
name?.let {
println("Hello, " + it)
}
}Zmiana nazwy it
Zamiast it możesz nadać parametrowi bardziej zrozumiałą nazwę. Poprawia to czytelność dłuższych bloków.
Użyj strzałki, aby jawnie nadać mu nazwę.
val name: String? = "Bo"
name?.let { value ->
println(value.uppercase())
}Funkcja also
Funkcja also również przekazuje obiekt jako it, ale zwraca oryginalny obiekt zamiast wyniku bloku.
Świetnie sprawdza się przy efektach ubocznych, takich jak logowanie, gdy chcesz zachować niezmienioną wartość w łańcuchu wywołań.
fun main() {
val n = 5.also { println("got " + it) }
println(n) // prints: 5
}Wartość zwracana przez let i also
Najważniejsza różnica jest taka: let zwraca wynik bloku, a also zwraca oryginalny obiekt.
Wybierz let, gdy chcesz przekształcić wartość, a also, gdy chcesz ją podejrzeć bez zmieniania.
val a = "hi".let { it.length } // a = 2 (Int)
val b = "hi".also { it.length } // b = "hi" (String)also do logowania
Ponieważ also zwraca obiekt, można włączyć je do łańcucha wywołań, aby sprawdzić wartość w trakcie przetwarzania.
Tutaj logujemy wartość dopuszczającą null tylko wtedy, gdy jest dostępna, a następnie nadal jej używamy.
fun main() {
val token: String? = "abc"
val result = token?.also { println("token: " + it) }
println(result)
}let z operatorem Elvis
Połącz ?.let z operatorem Elvis, aby określić alternatywę na wypadek, gdy wartość będzie null.
Blok tworzy wynik, gdy wartość jest dostępna, a prawa strona operatora Elvis obsługuje przypadek null.
fun main() {
val raw: String? = null
val out = raw?.let { it.trim() } ?: "empty"
println(out) // prints: empty
}Wybór funkcji zakresu
W kontekście bezpieczeństwa wartości null wybierz let, gdy chcesz przekształcić wartość lub użyć jej w bloku jako wartości różnej od null. Wybierz also, gdy potrzebujesz efektu ubocznego, ale musisz zachować oryginalny obiekt.
Obie funkcje naturalnie łączą się z operatorem bezpiecznego wywołania, aby uniknąć awarii spowodowanych przez null.
user?.let { save(it) } // transform/use
user?.also { log(it) } // side effect, keep userPołączony przykład
Ten program używa ?.let do utworzenia komunikatu, a operatora Elvis jako rozwiązania awaryjnego. Pokazuje typowy sposób bezpiecznego obsługiwania wartości null w Kotlinie.
Nie ma tu jawnych sprawdzeń wartości null, a mimo to kod jest w pełni bezpieczny.
fun main() {
val city: String? = "Goreme"
val label = city?.let { "City: " + it } ?: "Unknown"
println(label)
}Szybkie sprawdzenie
Sprawdź, czy rozumiesz działanie funkcji let i also.
Podsumowanie
Funkcje zakresu uruchamiają blok w kontekście obiektu. let przekazuje obiekt jako it i zwraca wynik bloku, a also przekazuje it i zwraca oryginalny obiekt.
Dzięki ?.let możesz działać na wartości tylko wtedy, gdy nie jest null. Następnie połączysz te idee, aby całkowicie uniknąć wyjątków NullPointerException.
Często zadawane pytania
Czy lekcja „let, also i funkcje zakresu” jest bezpłatna?
Tak — pełny tekst „let, also i funkcje zakresu” 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 4 lekcji w sumie.
Co nauczysz się w „let, also i funkcje zakresu”?
Będzie Pan/Pani pracować z wartościami nullable. Ć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 3 z 4.
Ile czasu zajmuje lekcja „let, also i funkcje zakresu”?
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
- Typy nullable a non-null
- Bezpieczne wywołania i Elvis
- let, also i funkcje zakresu
- Unikanie NullPointerExceptions