kotlin обратное булево безопасное литье

Предположим, у меня есть объект Response. Теперь я хотел бы проверить логическую переменную, успех в ответном ответе и сделать раннее возвращение – ответ не увенчался успехом.

if(response == null || !response.success){ return; } //Java version 

Теперь я хотел бы использовать нулевую проверку безопасности Kotlin, как показано ниже.

 if(response?.success ?: true){ return } 

Если я не ошибаюсь, если любой ответ или успех равен нулю, мы вернем true в условии if. Однако, если response.success не равен NULL и равен true, мы все равно вернемся из функции, чего я не хочу. Как исправить это условие?

    Я думаю, вам нужно сделать

     if(!(response?.success ?: false)){ return; // null or failed } 

    что эквивалентно вашей версии java.

    но обратите внимание: если null контрольную версию легче читать. Вы можете использовать это в Котлине тоже

    вы также можете перевернуть условие

     response?.success?.let { // do something when success } 

    см. документ оператора Elvis для получения дополнительной информации

    Intereting Posts
    NoSuchMethodError с использованием Kotlin с новой привязкой данных Android Statusbar не прозрачен, но белый Функция Memoization в Котлине Как получить содержимое веб-страницы на Kotlin Получить дату datepicker на Kotlin TornadoFX torgadoFX togglebutton не имеет текстового свойства BottomNavigationView ссылку на ViewPager, когда я установил Listener в bottomNavigationView, мне нужно дважды щелкнуть, чтобы выполнить то, что я делаю Kotlin – TypeCastException на view.getTag () Предупреждение Котлина: Условный результат ветви типа … – это импликация любого? Что такое эквивалент Котлина для поразрядного или с присвоением '| ='? Как использовать привязку данных и Kotlin в Android Studio 3.0.0 Что означает тип возврата Void в Котлине Попытка исключить поле при сохранении класса данных kotlin в качестве документа в Google Cloud Firestore Ошибка приложения из-за того, что экземпляр экземпляра lateinit не инициализирован Котлин: Что такое kotlin.String! тип