Если у меня есть значение Boolean b, допускающее значение NULL , я могу выполнить следующее сравнение на Java:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
В Kotlin я могу добиться того же, используя !!оператор:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
Однако использование функции !!кажется мне немного схематичной, поскольку она позволяет обойти нулевую систему безопасности.
Есть ли для этого более элегантный подход?
Edit Кажется, я немного упростил. Для локальных переменных, как показывает Бантар , это работает. Однако мое логическое значение bна самом деле является «свойством с резервным полем» (я еще не совсем понимаю, что это налагает). Вот результат:
bможет быть, nullи одной из функций Kotlin является Null Safety , которая дает ошибки компиляции при попытке оценить ссылки, допускающие значение NULL. Таким образом, использование plain bдает ошибку компиляции :)
b != nilпоймете это, пока не проверите правую сторону?
val r = b?doSomething() ?: doSomethingElse()должно работать.

!!bи не простоb? (Я не так хорошо знаком с котлином, просто любопытство)