Menu
CoddyTech

Оператор Элвиса

Часть раздела Основы путешествия по Kotlin на Coddy. Урок 15 из 93.

Оператор безопасного вызова помогает избежать сбоев, но иногда вместо null нужно получить настоящее значение. Оператор Элвиса ?: позволяет указать значение по умолчанию, если выражение равно null.

Синтаксис прост: поставь ?: после выражения, допускающего значение null, а затем укажи резервное значение:

fun main() {
    val name: String? = null
    val displayName = name ?: "Guest"
    println(displayName)  // Выводит: Guest
}

Если левая часть не равна null, используется это значение. Если она равна null, результатом становится правая часть. Это отлично работает с безопасными вызовами:

fun main() {
    val text: String? = null
    val length = text?.length ?: 0
    println(length)  // Выводит: 0
    
    val greeting: String? = "Hello"
    val greetingLength = greeting?.length ?: 0
    println(greetingLength)  // Выводит: 5
}

Оператор получил своё название потому, что ?: сбоку напоминает причёску Элвиса. Что ещё важнее, он позволяет удобным способом преобразовывать nullable-типы в значения, не допускающие null, с разумными значениями по умолчанию.

challenge icon

Задание

Легко

У посылки есть необязательная метка отслеживания и необязательное место назначения. В стартовом коде предоставлены оба значения, допускающие null. Используй ?:, чтобы выбрать "Pending", если метка отслеживания отсутствует, и "Unassigned", если место назначения отсутствует. Выведи выбранную метку, а затем выбранное место назначения на отдельных строках.

Попробуйте сами

fun main() {
    val trackingLabel: String? = null
    val destination: String? = "Harbor"
    // Выберите и выведите два значения для отображения.
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Kotlin