Menu
Coddy logo textTech

Operator bezpiecznego wywołania

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

Gdy masz zmienną, która może mieć 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żywasz ?., 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 też łą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 i nie zgłasza błędu.

challenge icon

Wyzwanie

Łatwy

Otrzymujesz następującą zmienną dopuszczającą wartość null:

val message: String? = "Kotlin"

Użyj operatora bezpiecznego wywołania, aby:

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

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

val empty: String? = null

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

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

Spróbuj swoich sił

fun main() {
    val message: String? = "Kotlin"
    
    // TODO: Użyj operatora bezpiecznego wywołania, aby pobrać 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 pobrać 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