Если у меня есть значение 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
? (Я не так хорошо знаком с котлином, просто любопытство)