【发布时间】:2019-08-12 18:15:08
【问题描述】:
我有这个代码:
type Response[A] = EitherT[Future, String, A]
val powerLevels = Map(
"Jazz" -> 6,
"Bumblebee" -> 8,
"Hot Rod" -> 10
)
def getPowerLevel(autobot: String): Response[Int] = {
val result = Future {
powerLevels.get(autobot) {
case Some(number) => Right(number)
case None => Left(s"Can't get connect to $autobot")
}
}
}
我不明白如何将函数 getPowerLevel (Future[Either[String, Int]]) 中的计算结果转换为 (Writer 正确到 Response[Int] 类型。我想在 Future 中调用 powerLevels.get(autobot)。
【问题讨论】:
-
您在
get(autobot)之后缺少一个match,要创建一个EitherT,您只需将result传递给构造函数 .例如。new EitherT(result). -
链接到描述如何执行此操作的文档:typelevel.org/cats/datatypes/…
标签: scala functional-programming scala-cats