Bezpieczne wywołania i Elvis
Operatory ?. i ?:
Bezpieczne wywołania i Elvis to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 2 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 Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Czytelna praca z wartościami nullable
Zapisywanie if (x != null) w każdym miejscu staje się rozwlekłe. Kotlin oferuje dwa zwięzłe operatory przeznaczone do wartości nullable:
- bezpieczne wywołanie
?. - operator Elvis
?:
Operator bezpiecznego wywołania
Bezpieczne wywołanie ?. wywołuje metodę lub odczytuje właściwość tylko wtedy, gdy wartość nie jest równa null. W przeciwnym razie całe wyrażenie przyjmuje wartość null.
Bez awarii i bez jawnego sprawdzania.
fun main() {
val name: String? = "Kotlin"
println(name?.length)
}Bezpieczne wywołanie dla wartości null
Gdy odbiorca ma wartość null, bezpieczne wywołanie kończy działanie i zwraca null zamiast zgłaszać wyjątek.
To najważniejsza różnica w porównaniu ze zwykłym wywołaniem za pomocą kropki.
fun main() {
val name: String? = null
println(name?.length)
}Łączenie bezpiecznych wywołań
Bezpieczne wywołania można łączyć. Jeśli dowolne ogniwo łańcucha ma wartość null, cały wynik przyjmuje wartość null.
Eliminuje to konieczność stosowania głęboko zagnieżdżonych sprawdzeń wartości null.
fun main() {
val text: String? = "hello world"
val result = text?.uppercase()?.substring(0, 5)
println(result)
}Operator Elvis
Operator Elvis ?: zapewnia wartość zastępczą, gdy lewa strona ma wartość null.
Należy go odczytywać następująco: użyj lewej wartości albo prawej.
fun main() {
val name: String? = null
val display = name ?: "Guest"
println(display)
}Elvis z rzeczywistą wartością
Jeśli lewa strona nie ma wartości null, operator Elvis po prostu ją zwraca i pomija wartość zastępczą.
Wartość zastępcza jest używana tylko wtedy, gdy brakuje wartości.
fun main() {
val name: String? = "Sam"
val display = name ?: "Guest"
println(display)
}Łączenie bezpiecznego wywołania i operatora Elvis
Operatory te są często używane razem. Bezpieczne wywołanie może zwrócić null, a operator Elvis dostarcza wartość domyślną.
To jeden z najczęściej stosowanych idiomów Kotlin.
fun main() {
val name: String? = null
val length = name?.length ?: 0
println(length)
}Elvis do wcześniejszego zwracania wyniku
Prawa strona operatora Elvis może zawierać return lub throw. Jest to czytelny sposób na wcześniejsze zakończenie działania, gdy brakuje wartości.
Jeśli id ma wartość null, funkcja natychmiast zwraca wynik.
fun process(id: String?) {
val safeId = id ?: return
println("Processing " + safeId)
}
fun main() {
process("A-100")
process(null)
println("done")
}Bezpieczne wywołanie z let
Połącz ?. z let, aby wykonać blok tylko wtedy, gdy wartość nie jest równa null.
Wewnątrz bloku it odnosi się do wartości non-null.
fun main() {
val name: String? = "Kotlin"
name?.let {
println("Length is " + it.length)
}
}Wartości domyślne liczb z operatorem Elvis
Operator Elvis jest przydatny do konwertowania wartości liczbowych typu nullable na bezpieczne wartości domyślne przed wykonaniem działań arytmetycznych.
W tym przypadku wartość null dla count zostaje zamieniona na 0, dzięki czemu obliczenia zawsze działają.
fun main() {
val count: Int? = null
val total = (count ?: 0) + 5
println(total)
}Łączenie wszystkiego
Łącznie operatory te zastępują rozbudowane sprawdzenia wartości null:
?.wywołuje kod tylko wtedy, gdy wartość nie jest równa null?:dostarcza wartość zastępczą, gdy występuje null- Łączenie operatorów i
letpozwala zwięźle obsługiwać złożone przepływy
fun main() {
val input: String? = null
val name = input?.trim()?.uppercase() ?: "UNKNOWN"
println(name)
}Szybkie sprawdzenie
Sprawdźcie Państwo swoją wiedzę na temat bezpiecznych wywołań i operatora Elvis.
Podsumowanie
Poznali Państwo dwa podstawowe operatory obsługujące wartości nullable:
- Bezpieczne wywołanie
?.zwraca null zamiast powodować awarię - Elvis
?:zapewnia wartość zastępczą - Można je łatwo łączyć z
leti wcześniejszymi instrukcjamireturn
W następnej części poznają Państwo operator !! oraz dowiedzą się, dlaczego należy używać go ostrożnie.
Często zadawane pytania
Czy lekcja „Bezpieczne wywołania i Elvis” jest bezpłatna?
Tak — pełny tekst „Bezpieczne wywołania i Elvis” 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 Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Bezpieczne wywołania i Elvis”?
Operatory ?. i ?: Ćwiczysz Kotlin 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ąć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin 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 4.
Ile czasu zajmuje lekcja „Bezpieczne wywołania i Elvis”?
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 Kotlin Academy?
Tak. Każda lekcja Kotlin 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 i non-null
- Bezpieczne wywołania i Elvis
- Operator !!
- Typy platformowe