kotlin обратное логическое безопасное литье
Допустим, у меня есть объект Response. Теперь я хотел бы проверить булеву переменную success в поле Response и сделать ранний возврат, если ответ не успешен.
if(response == null || !response.success){
return;
} //Java version
Теперь я хотел бы использовать нулевую проверку безопасности Kotlin следующим образом
if(response?.success ?: true){
return
}
Если я не ошибаюсь, если ответ или успех равен нулю, мы вернем true в условии if. Однако, если response.success не имеет значение null и равно true, мы все равно вернемся из функции, а это не то, что мне нужно. Как мне исправить это состояние?
2 ответа
Я думаю, что вы должны сделать
if(!(response?.success ?: false)){
return // null or failed
}
что эквивалентно вашей версии Java.
но обратите внимание: если null
проверить версию легче читать. Вы можете использовать это в Kotlin тоже
Вы также можете перевернуть условие
response?.success?.let {
// do something when success
}
см. документ оператора Elvis для получения дополнительной информации
Довольно старый вопрос, но я просто наткнулся на него. Следующее может быть самым коротким предложением if:
if (response?.success != true) {
//There is either no response, or it was not successful
}