How flatMap cats Applicatives

问题描述 投票:3回答:1

我已经开始使用Cats学习函数式编程,并且坚持使用flatMapping(合并)应用程序F[List]

在纯Scala中,非常简单的就是这样映射列表列表:

val animals = List("Dog", "Cat", "Bird")
def getBreads(animal: String): List[String] = ...

val allAnimalsBreads = animals.flatMap(animal => getBread(animal)) // this will be just List[String]

如果所有内容都用应用程序包装,该怎么办?:

val animals = List("Dog", "Cat", "Bird").pure[F]
def getBreads(animal: String): F[List[String]] = ...

val allAnimalsBreads = ? // this should be F[List[String]]
scala function functional-programming scala-cats
1个回答
0
投票

每个应用程序都有一个映射操作,因此您只需要使用flatMap映射内部值(List):

val allAnimalBreads = Applicative[F].map(_.flatMap(getBread))
© www.soinside.com 2019 - 2024. All rights reserved.