На этом шаге мы рассмотрим использование такого варианта.
Третий вариант для безопасной работы с null-значениями - это проверить переменную с помощью оператора if. Оператор != проверяет неравенство значения слева значению справа, и его можно использовать для проверки значения на null. Попробуйте в таверне.
fun main() { var beverage = readLine() // beverage = null if (beverage != null) { beverage = beverage.capitalize() } else { println("I can't do that without crashing - beverage was null!") } println(beverage) }
Рис.1. Использование != для проверки на null (Tavern.kt)
Теперь, если beverage равно null, вы получите следующее сообщение, а не ошибку.
I can't do that without crashing - beverage was null!
Оператор безопасного вызова предпочтительнее value != null как более гибкий инструмент, решающий проблему меньшим количеством кода. Например, безопасный вызов легко связать с последующими вызовами функций:
beverage?.capitalize()?.plus(", large")
Обратите внимание, что вам не пришлось использовать оператор !!. при обращении к beverage в beverage = beverage.capitalize(). Kotlin распознал, что в ветви if переменная beverage не может иметь значения null и повторная проверка на null не нужна. Эта способность компилятора отслеживать условия внутри выражения if является примером умного приведения типов.
Когда применять оператор if/else для проверки на null? Этот вариант хорошо подходит при сложных вычислениях и в случаях, если вы предварительно хотите проверить переменную на null. Оператор if/else позволяет выразить сложную логику в простом и понятном виде.
На следующем шаге мы рассмотрим оператор ?:.