Kotlin:lambda运行替代方案

时间:2019-06-26 14:50:16

标签: kotlin lambda

我有userDto,包含programs,其中包含actual字段。实际程序只能是一个。我需要得到它。比,我运行这个:

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

好的,但是我想预见到findLast返回null并抛出异常的情况。请提出建议,该怎么做?

UPD:

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

1 个答案:

答案 0 :(得分:1)

您实际上非常接近:)!您可以做的是:

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
}

希望这会有所帮助,加油!