Котлин: лямбда запускает альтернативный сценарий - PullRequest
0 голосов

У меня есть userDto, содержит programs, который содержит поле actual. Актуальная программа может быть только одна. Мне нужно это получить. Затем я запускаю это:

userDto.programs.sortedBy { it.created }.findLast { it.actual }?

Хорошо, но я хочу предвидеть случай, когда findLast возвращает ноль, и выбрасывать исключение. Пожалуйста, совет, как это сделать?

UPD:

ProgramType.valueOf(userDto.programs
                                .sortedBy { it.created }
                                .findLast { it.actual }
                        //check here
                        !!.programType!!).percentage

1 Ответ

1 голос
/ 26 июня 2019

Вы довольно близки на самом деле :)!Что вы могли бы сделать:

userDto.programs.sortedBy { it.created }.findLast { it.actual } ?: throw RuntimeException()

Или, если вы пытаетесь на самом деле избежать выдачи ошибки (на самом деле не можете сказать, как задается вопрос), вы можете просто выполнить проверку на ошибку, как это:

userDto.programs.sortedBy { it.created }.findLast { it.actual }?.let{
//rest of your code goes here
}

Надеюсь, это поможет, ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...