我们来看看这段代码:
scala> val a = List(Some(4), None)
a: List[Option[Int]] = List(Some(4), None)
scala> a.flatMap( e=> e)
List[Int] = List(4)
Run Code Online (Sandbox Code Playgroud)
为什么要flatMap在函数{ e => e }上应用List[Option[T]]返回a List[T]并None删除元素?
具体来说,背后的概念推理是什么 - 它是基于函数式编程中的一些现有理论吗?这种行为在其他功能语言中是否常见?
虽然这确实很有用,但同时确实感觉有点神奇而又随意.
编辑:
感谢您的反馈和回答.我重写了我的问题,更加强调问题的概念性.而不是Scala具体的实现细节,我更感兴趣的是了解它背后的正式概念.