【问题标题】:flatMap without object in front in a function kotlin函数kotlin中前面没有对象的flatMap
【发布时间】:2020-06-15 07:45:25
【问题描述】:
fun Mono<Something>.update(): Mono<Something2> {
   return flatMap { mySomething ->
      // some stuff
   }.map()
}

上面的代码是如何工作的?

  1. 函数/方法名前的Mono&lt;Something&gt;是什么意思?
  2. 如果前面没有任何对象,它如何使用flatMap?我以为flatmap 的用法就像SomeArray.flatMap{}
  3. 在这种情况下mySomething 指的是什么?
  4. flatMap 然后与map 链接的目的是什么?

【问题讨论】:

  • 我怀疑 --&gt; 在 Kotlin 中是一个有效的运算符。你能查一下吗?
  • 你说得对,是错字->
  • (1) 这就是extension functions 的声明方式。 (2) 它在Mono&lt;Something&gt; 实例上调用flatMap(即this)。 (3)lambda expression的参数。 (4) 我无法从提供的代码中看出。

标签: kotlin flatmap


【解决方案1】:
  1. Mono 是使用扩展函数 update 的定义扩展的类型。见Here
  2. flatMap 正在通过扩展功能提供的 this 接收器上调用。
  3. mySomething 是 lambda 的参数,它将通过 Iterable 接口的实现绑定到 Mono 提供的元素(假设 flatMap 具有通常的语义)。
  4. flatMap { it.foo() }.map { it.toString() } 等情况下,map 允许无法推入flatMap 中执行的转换的转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2021-12-29
    • 1970-01-01
    • 2021-10-15
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多