Scala 函数式编程与并发编程工具深度解析
1. 函数式编程中的 Monad
在函数式编程领域,Monad 是一个极为关键的概念。以下是关于 Monad 的一些基础代码示例:
import scala.language.higherKinds
val seqf: Int => Seq[Int] = i => 1 to i
val optf: Int => Option[Int] = i => Option(i + 1)
SeqM.flatMap(List(1,2,3))(seqf) // Seq[Int]: List(1,1,2,1,2,3)
SeqM.flatMap(List.empty[Int])(seqf) // Seq[Int]: List()
OptionM.flatMap(Some(2))(optf) // Option[Int]: Some(3)
OptionM.flatMap(Option.empty[Int])(optf) // Option[Int]: None
flatMap 方法的作用是从左侧容器中提取类型为 A 的元素,并将其绑定到新容器实例中的新元素类型上。与 map 类似,它减轻了从 M[A] 中提取元素的负担。不过,函数参数似乎需要知道如何构造新的 M[B] ,但实际上可以调用 unit 来完成这个
超级会员免费看
订阅专栏 解锁全文
50

被折叠的 条评论
为什么被折叠?



