Оператор Элвиса
Часть раздела Основы путешествия по 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
}Оператор получил своё название, потому что ?: при взгляде сбоку напоминает причёску Элвиса. Что ещё важнее, он предоставляет удобный способ преобразовать типы, допускающие значение null, в значения без null с разумными значениями по умолчанию.
Задание
ЛегкоУ посылки есть необязательная метка отслеживания и необязательное назначение. В начальном коде предоставлены оба значения, допускающих null. Используй ?:, чтобы выбрать "Pending", если метка отслеживания отсутствует, и "Unassigned", если назначение отсутствует. Выведи выбранную метку, затем выбранное назначение, каждое на отдельной строке.
Попробуйте сами
fun main() {
val trackingLabel: String? = null
val destination: String? = "Harbor"
// Выберите и выведите два отображаемых значения.
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеОператоры сравненияПовторение — простая математика7Базовый ввод-вывод
Функция PrintlnШаблоны строкВвод ReadLineПреобразование типовПовторение — лет до выхода на пенсиюПовторение — правда или ложь10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияИменованные аргументыЗначения по умолчаниюФункции с одним выражениемПовторение — функция SigmaПовторение — функция валидации13Итерация по последовательностям
Итерация по элементамМетод WithIndexИтерация по строкам, ч. 1Итерация по строкам, ч. 2Повторение — индексированные буквы2Переменные
Val и VarВывод типовЧислаСтрокаЛогическое значениеСоглашения об именованииПовторение — инициализация переменных5Операторы, часть 2
Логические операторы, часть 1Логические операторы, часть 2Логические операторы, часть 3Тернарный оператор с выражением ifПовторение — простая логика8Калькулятор разделения счёта
Приветственное сообщениеВвод данных3Обработка null
Что такое безопасность nullТипы, допускающие nullОператор безопасного вызоваОператор ЭлвисаОсновы задания на функцииУтверждение ненулевого значенияПовторение — безопасный доступ6Принятие решений
Инструкция ifIf — ElseIf как выражениеВыражение whenWhen с диапазонамиПовторение — простой калькулятор9Циклы
Цикл ForЦикл WhileЦикл Do-WhileBreakContinueДиапазоны в циклахВложенный циклПовторение — факториалПовторение — динамический вводПотренируйтесь самостоятельно: Песочница Kotlin