【发布时间】:2019-04-09 03:54:36
【问题描述】:
我正在尝试实现类似以下代码的功能
def getUsers: EitherT[Future, String, Response] = {
for {
users <- EitherT(userRepository.findAll) // this method would retrieve a Future[Either[String, Seq[User]]]
user <- users
friends <- EitherT(userRepository.findFriends(user.id))
} yield new Response(user, friends)
}
我知道这是不可能的,因为EitherT 不管理foreach。
case class User(id: Long, name: String, email: String)
case class Response(user: User, friends: Seq[User])
解决这个问题的好方法是什么?
【问题讨论】:
-
@erip 感谢您的阅读,我更新了这个问题试图解释我的想法。
-
user <- users没有做任何事情。即使这样做,您也会为每个用户创建一个朋友列表。似乎您的函数只想返回一个响应每个用户。
标签: scala scala-cats either