"Умные" преобразования в Kotlin | OTUS

Курсы

Программирование
Разработчик на Spring Framework C# ASP.NET Core разработчик iOS Developer. Basic Специализация iOS iOS Developer. Professional Архитектура и шаблоны проектирования Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик IoT Node.js Developer Java Developer. Professional
-19%
Microservice Architecture Unreal Engine Game Developer Scala-разработчик Java Developer. Basic HTML/CSS Специализация C++ Developer C++ Developer. Professional Android Developer. Professional
-20%
PostgreSQL для администраторов баз данных и разработчиков
-20%
Алгоритмы и структуры данных Специализация PHP Developer C# Developer. Professional Специализация C# Kotlin Developer. Basic Web-разработчик на Python Team Lead NoSQL Symfony Framework Unity Game Developer. Professional Буткемп Java Groovy Developer
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

"Умные" преобразования в Kotlin

В этой заметке поговорим про Smart casts или "умные" преобразования.

При некоторых обстоятельствах можно проверить, существуют ли у nullable-типа какое-нибудь значение, кроме null. Если да, то появляется возможность использовать переменную так, как будто она не является null:

1-1801-9d55a1.png

Из кода видно, что при использовании nullable-значения authorName отсутствуют восклицательные знаки. Такое использование nullable-проверок -- это пример smart cast либо умного преобразования типов.

Когда nullable-переменная содержит значение, то if-выражение выполняет 1-й блок кода, где Kotlin умным образом преобразует authorName к стандартному не-null типу String. Если же nullable-переменная не содержит значения (null), то выражение if будет выполнять блок else.

Следует отметить, что применение smart cast считается более безопасным, чем утверждение не-null значения посредством оператора !!. При этом лучше задействовать smart cast всегда, когда у nullable-типа значение может быть null. Ну а утверждение не-null значения подойдет лишь в одном случае -- когда nullable гарантированно содержит значение.

Кроме вышесказанного, применение smart cast будет полезным, когда nullable проверен и не будет после этого меняться. Например, когда nullable присваивается переменной, неизменяемой как после умного преобразования, так и перед использованием либо после присвоения константе.

Собственно говоря, знание этих нюансов позволит вам безопасно заглядывать внутрь nullable-типа и извлекать значения, если они там присутствуют.

1-1801-8b030e.jpg

По материалам https://kotlins.org/null.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться