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?