map和flatMap区别?

⭐️⭐️

1.首先需要指出两者的签名:

def map[B](f: A => B)
def flatMap[B](f: A => List[B])

解释flatMap返回的是集合即可。

2.另一点,有时flatMap相当于使用flatten,比如集合。map和flatMap使用都很广泛,是个已经成为标准的方法名了,许多库都有这个方法,比如,假设有一个effect库的类:

trait TraitMonad[F[_]] {
    // 如果map长这样
    def map[B](f: A => B)
    // 那么flatMap必然长这样,或者是差不多这样的。
    def flatMap[B](f: A => F[B])
}

答到1及格,答全满分。由于是简单题,不要求能写出TraitMonad。

Last updated

Was this helpful?