ScalaList中map和flatMap详解

// 看一下List中map和flatMap的实现就一目了然:
abstract class List[T]{
def map[U](f: T => U): List[U] = this match {
case first :: last = f(first) :: last.map(f)
case Nil = Nil
}

def flatMap[U](f: T => List[U]): List[U] = this match{
case x:: xs => f(x) ++ xs.flatMap(f)
case Nil => Nil
}
}

总结:
1. map会将每一条输入映射为一个新对象。{苹果,梨子}.map(去皮) = {去皮苹果,去皮梨子} 其中: “去皮”函数的类型为:A => B
2.flatMap包含两个操作:会将每一个输入对象输入映射为一个新集合,然后把这些新集合连成一个大集合。 {苹果,梨子}.flatMap(切碎) = {苹果碎片1,苹果碎片2,梨子碎片1,梨子碎片2} 其中: “切碎”函数的类型为: A => List< B >

作者:jiChaoLi
链接:https://www.zhihu.com/question/34548588/answer/70974648
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(Scala)