0Pricing
Kotlin Academy · Lekcja

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 let pozwala 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 let i wcześniejszymi instrukcjami return

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

  1. Typy nullable i non-null
  2. Bezpieczne wywołania i Elvis
  3. Operator !!
  4. Typy platformowe
← Powrót do Kotlin Academy