У меня есть элемент с переменной datePurchased
, который может быть пустым. Основываясь на дате покупки, я создаю ярлык. Когда я проверяю, имеет ли datePurchased значение null, в ветке else мне все равно нужно проверить значение null. В нем говорится, что умный литье невозможно, потому что это свойство mutable.Kotlin проверяет значение null дважды в if else
Вот что я пытался до сих пор:
if (datePurchased == null) {
""
} else {
if (datePurchased.isToday()) {//error here
}
}
when {
datePurchased == null -> {
}
datePurchased.isToday() -> {//smart cast bla bla mutable bla bla
datePurchased?.isToday() -> {//expected Boolean, got Boolean?
datePurchased?.isToday()?:false -> {//all good, but does not look nice, since datePurchased can't be null here
}
else -> {
}
}
Возможный дубликат [Лучший способ справиться с таким сценарием, где «умный литье невозможно»] (http://stackoverflow.com/questions/39246249/best-way-to-handle-such-scenario-where-smart- cast-is-impossibleible) – miensol
@miensol Итак, вы предполагаете, что ветка my else должна быть «завернута» в '? .let'? –
Да. Вы можете сделать это: 'datePurchased? .let {if (it.isToday()) // Сделать что-то}?:" "' – marstran