Оператор безопасного вызова
Часть раздела Основы путешествия по Kotlin на Coddy. Урок 14 из 93.
Если у вас есть переменная, допускающая значение null, вы не можете напрямую вызывать её методы или обращаться к её свойствам: компилятор этого не позволит, потому что значение может быть null. Оператор безопасного вызова ?. элегантно решает эту проблему.
Вместо обычной точки . используйте ?., чтобы безопасно обращаться к членам типа, допускающего значение null:
fun main() {
val name: String? = "Alice"
val length = name?.length // Возвращает 5
println(length)
val nullName: String? = null
val nullLength = nullName?.length // Возвращает null (без сбоя!)
println(nullLength)
}Оператор безопасного вызова проверяет, равно ли значение null, прежде чем обращаться к свойству или методу. Если значение равно null, всё выражение возвращает null, а не приводит к сбою. Если значение существует, оператор работает так же, как обычный вызов.
Также можно объединить несколько безопасных вызовов в цепочку:
fun main() {
val text: String? = "Hello"
val result = text?.uppercase()?.length
println(result) // Выводит: 5
}Если какая-либо часть цепочки равна null, всё выражение безопасно возвращает null, не вызывая ошибку.
Задание
ЛегкоВам предоставлена следующая nullable-переменная:
val message: String? = "Kotlin"Используйте оператор безопасного вызова, чтобы:
- Получить длину
messageи вывести её - Преобразовать
messageв верхний регистр и вывести результат
Затем создайте ещё одну nullable-переменную:
val empty: String? = nullИспользуйте оператор безопасного вызова, чтобы получить длину empty и вывести её.
Каждый результат следует выводить на отдельной строке. Помните: оператор безопасного вызова возвращает
null, если значение равноnull.
Попробуйте сами
fun main() {
val message: String? = "Kotlin"
// TODO: Используйте оператор безопасного вызова, чтобы получить длину message и вывести её
// TODO: Используйте оператор безопасного вызова, чтобы преобразовать message в верхний регистр и вывести результат
val empty: String? = null
// TODO: Используйте оператор безопасного вызова, чтобы получить длину empty и вывести её
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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