Menu
CoddyTech

Operator bezpiecznego wywołania

Część sekcji Podstawy ścieżki Kotlin w Coddy. Lekcja 14 z 93.

Gdy masz zmienną dopuszczającą wartość null, nie możesz bezpośrednio wywoływać jej metod ani uzyskiwać dostępu do jej właściwości: kompilator na to nie pozwoli, ponieważ wartość może być null. Operator bezpiecznego wywołania ?. elegancko rozwiązuje ten problem.

Zamiast używać zwykłej kropki ., użyj ?., aby bezpiecznie uzyskać dostęp do składowych typu dopuszczającego wartość null:

fun main() {
    val name: String? = "Alice"
    val length = name?.length  // Zwraca 5
    println(length)
    
    val nullName: String? = null
    val nullLength = nullName?.length  // Zwraca null (bez awarii!)
    println(nullLength)
}

Operator bezpiecznego wywołania sprawdza, czy wartość jest równa null, zanim uzyska dostęp do właściwości lub metody. Jeśli wartość jest równa null, całe wyrażenie zwraca null zamiast powodować awarię. Jeśli wartość istnieje, działa tak samo jak zwykłe wywołanie.

Możesz również łączyć ze sobą wiele bezpiecznych wywołań:

fun main() {
    val text: String? = "Hello"
    val result = text?.uppercase()?.length
    println(result)  // Wypisuje: 5
}

Jeśli dowolna część łańcucha ma wartość null, całe wyrażenie bezpiecznie zwraca null, nie zgłaszając błędu.

challenge icon

Wyzwanie

Łatwy

Oto podana zmienna dopuszczająca wartość null:

val message: String? = "Kotlin"

Użyj operatora bezpiecznego wywołania, aby:

  1. Uzyskać długość message i ją wypisać
  2. Zmienić message na wielkie litery i wypisać wynik

Następnie utwórz inną zmienną dopuszczającą wartość null:

val empty: String? = null

Użyj operatora bezpiecznego wywołania, aby uzyskać długość empty i ją wypisać.

Każdy wynik powinien zostać wypisany w osobnym wierszu. Pamiętaj: operator bezpiecznego wywołania zwraca null, gdy wartość wynosi null.

Spróbuj swoich sił

fun main() {
    val message: String? = "Kotlin"
    
    // TODO: Użyj operatora bezpiecznego wywołania, aby uzyskać długość message i ją wypisać
    
    // TODO: Użyj operatora bezpiecznego wywołania, aby zamienić message na wielkie litery i wypisać wynik
    
    val empty: String? = null
    
    // TODO: Użyj operatora bezpiecznego wywołania, aby uzyskać długość empty i ją wypisać
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Kotlin