0Pricing
Kotlin Academy · Lekcja

Bezpieczne wywołanie ?. i Elvis ?: w rzeczywistym kodzie

Łącz bezpieczne wywołania i podawaj wartości zastępcze za pomocą operatora Elvis.

Bezpieczne wywołanie ?. i Elvis ?: w rzeczywistym kodzie 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.

Dwa operatory o dużym znaczeniu

Bezpieczne wywołanie ?. wywołuje składową tylko wtedy, gdy receiver nie ma wartości null. Operator Elvis ?: udostępnia wartość zastępczą, gdy lewa strona ma wartość null.

Podstawy bezpiecznego wywołania

x?.member ma wartość null, jeśli x ma wartość null; w przeciwnym razie uzyskuje dostęp do member w zwykły sposób.

fun main() {
    val name: String? = "Kotlin"
    val len: Int? = name?.length
    println(len) // 6
    val nope: String? = null
    println(nope?.length) // null
}

Podstawy operatora Elvis

x ?: default zwraca x, jeśli nie ma ono wartości null, a w przeciwnym razie zwraca znajdujące się po prawej stronie default.

fun main() {
    val name: String? = null
    val display = name ?: "Anonymous"
    println(display) // Anonymous
}

Łączenie bezpiecznego wywołania i operatora Elvis

Typowy idiom: obj?.member ?: default — odczytaj wartość lub użyj wartości zastępczej.

fun main() {
    val name: String? = null
    val length = name?.length ?: 0
    println("length = $length") // 0
}

Łączenie bezpiecznych wywołań

Łącz ?. na wielu poziomach — całe wyrażenie przyjmuje wartość null, jeśli którekolwiek ogniwo ma wartość null.

class Address(val city: String?)
class User(val address: Address?)
fun main() {
    val u: User? = User(Address(null))
    val city = u?.address?.city ?: "Unknown"
    println(city) // Unknown
}

Wyjątek po prawej stronie operatora Elvis

Prawa strona operatora Elvis może zawierać dowolne wyrażenie, w tym throw — jest to przydatne podczas sprawdzania wymaganych wartości.

fun loadConfig(path: String?): String {
    val p = path ?: throw IllegalArgumentException("path required")
    return "loaded $p"
}
fun main() {
    println(loadConfig("/etc/app"))
    // loadConfig(null) // throws
}

Bezpieczne wywołanie metod

Bezpieczne wywołania działają z dowolną metodą, nie tylko z dostępem do właściwości.

fun main() {
    val raw: String? = "  hello  "
    val cleaned = raw?.trim()?.uppercase() ?: ""
    println(cleaned) // HELLO
}

Bezpieczne wywołanie w warunkach

Bezpiecznych wywołań można używać wewnątrz warunków. Połącz je z operatorem Elvis, aby zapewnić domyślne wartości logiczne.

fun main() {
    val name: String? = "Alice"
    if (name?.startsWith("A") == true) {
        println("Starts with A")
    }
}

Operator Elvis z return

Użyj operatora Elvis z return w klauzulach ochronnych: zakończ działanie wcześniej, jeśli wymagana wartość ma wartość null.

fun process(input: String?) {
    val safe = input ?: return
    println("processing $safe")
}
fun main() {
    process("abc")
    process(null) // returns silently
}

Operator Elvis z continue/break

Wewnątrz pętli operator Elvis może skrótowo przejść do continue lub break, upraszczając obsługę wartości null.

fun main() {
    val items: List<String?> = listOf("a", null, "b", null, "c")
    for (item in items) {
        val v = item ?: continue
        print("$v ")
    }
    println() // a b c
}

Praktyka: wyszukiwanie konfiguracji

Bezpieczne wywołanie i operator Elvis można połączyć w jednym wierszu, aby odczytać opcjonalną konfigurację z wartością domyślną.

class Config(val timeoutMs: Int?, val host: String?)
fun main() {
    val cfg: Config? = Config(null, "prod.example.com")
    val timeout = cfg?.timeoutMs ?: 5000
    val host = cfg?.host ?: "localhost"
    println("$host @ $timeout ms")
}

Szybkie sprawdzenie

Jaką wartość przyjmie user?.email ?: "unknown", gdy user ma wartość null?

Podsumowanie

Łącz bezpieczne wywołanie (?.) i operator Elvis (?:), aby pisać zwięzły kod bezpieczny pod względem null. Używaj operatora Elvis z throw lub return w klauzulach ochronnych, które kończą działanie po wykryciu brakujących danych.

Często zadawane pytania

Czy lekcja „Bezpieczne wywołanie ?. i Elvis ?: w rzeczywistym kodzie” jest bezpłatna?

Tak — pełny tekst „Bezpieczne wywołanie ?. i Elvis ?: w rzeczywistym kodzie” 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łanie ?. i Elvis ?: w rzeczywistym kodzie”?

Łącz bezpieczne wywołania i podawaj wartości zastępcze za pomocą operatora Elvis. Ć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łanie ?. i Elvis ?: w rzeczywistym kodzie”?

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 dopuszczające null i modyfikator ?
  2. Bezpieczne wywołanie ?. i Elvis ?: w rzeczywistym kodzie
  3. let, also i run z odbiorcami dopuszczającymi null
  4. Operator !!: kiedy i dlaczego go unikać
← Powrót do Kotlin Academy