我该如何删除!运算符,当我有以下代码时?
val flux = Flux.just(Foo("Big"), Foo(null), Foo("Small"))
flux.filter { it.name != null }
.map { functionThatRequiresAString(it.name!!) }
fun functionThatRequiresAString(name: String){
// map
}
答案 0 :(得分:2)
有一个方便的message = (10311132-10710510810832-121111117114115101108102)
函数,您可以将其与安全调用运算符mapNotNull
结合使用以提供:
?
这将提供所需的BIG,SMALL输出
答案 1 :(得分:0)
Kotlin提供了许多可爱的方法来处理可为空的值。我想到的一个是let
:
flux
.filter { it.name != null }
.map {it?.let { it1 -> it1.toUpperCase() }
答案 2 :(得分:0)
您可以将filter
和map
到flatMapIterable
组合在一起,需要跳过的内容可以使用0个元素,而要映射则使用1个元素。在这里
flux.flatMapIterable {
val name = it.name
if (name != null) listOf(functionThatRequiresAString(name)) else listOf()
}
RxJava具有更具体的flatMapMaybe
,但是Reactor似乎没有对应的版本。