我正在从Java过渡到Kotlin,并且习惯于使用Java Streams.我有以下两个Kotlin代码片段,它们基本上做了相同的事情:它们试图通过客户端调用创建一个回顾,并将其映射到一个模型.如果创建或映射失败,则应抛出异常.
解决方案1:
val createdRetro =
retroClient.createRetro(newRetroDto)?.let(retroMapper::toModel)
?: throw Exception("Could not create retro")
解决方案2:
val createdRetro2 =
sequenceOf(retroClient.createRetro(newRetroDto))
.filterNotNull()
.map { retroMapper.toModel(it) }
.firstOrNull() ?: throw Exception("Could not create retro")
第二种方法对我来说似乎更熟悉,它来自Java,在Java中我经常使用带有map和orElseThrow的流.
这两个词中,哪一个在Kotlin 中更惯用?有没有一种更具Kotlin原生性的方法,可以结合我正在寻找的可读性和安全功能?