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 для получения дополнительной информации