По-котлински, вы можете использовать оператор безопасного вызова ('? '), чтобы выполнять операции над объектами, которые могут быть обнулены, без сбоев или даже делать это внутри блока if (obj!=null)
.
Итак, некоторый объект, такой как
if (someObj != null )
someObj.someOperation() //just doing some operation
- это то же самое, вызывая как: someObj?.someOperation()
.
Итак, если вы хотите проверить пустоту списка без условие if-else , вы можете использовать, как показано ниже (что вы уже сделали) .
storesList?.takeIf { it.isNotEmpty() }?.apply {
// Provides you list if not empty
}
Но как насчет условия здесь?
Для этого вы можете использовать оператор Элвиса для выполнения условия.Этот оператор делает, если левая сторона операции равна нулю или не удовлетворяет определенному условию, а затем принимает правую сторону операнда.
Итак, конечный код должен выглядеть следующим образом:
storesList?.takeIf { it.isNotEmpty() }?.apply {
// Provides you list if not empty
} ?: run {
// Else condition here
}
Объяснение: если storesList
равно пусто или равно нулю оно переходит к другой части (то есть после elvis) в противном случае переходит к применить блок .