打交道时,如何在换补偿处理的可选值,我有对COMPR看起来像:与期货
for {
user <- getFutureUser(1) // Future[User]
account <- getFutureAccount(1) // Future[Account]
historyOpt <- ???
} yield Wrapper(user, account, historyOpt)
case class Wrapper(user: User, account: Account, historyOpt: Option[History])
我被困在如何处理historyOpt值。 我有一个方法来获得历史:
def getHistory(id: Int): Future[History]
但是这是基于用户的,如果user.getHistory是真的,那么我返回它,否则它是无。
我试过,但它是错误的:
for {
user <- getFutureUser(1) // Future[User]
account <- getFutureAccount(1) // Future[Account]
historyOpt <- if(user.getHistory) getFutureHistory(1) else Future.successful(None)
} yield Wrapper(user, account, historyOpt)
我该如何处理这之情况?
什么'Wrapper'的第三个参数的类型? '历史'或'选项[历史]'? –
这是选项[历史] – Blankman
您是否正在使用Scalaz?我最近一直在读Monad Transformers,听起来它可能会帮助你的情况:https://www.47deg.com/blog/fp-for-the-average-joe-part-2-scalaz-monad-transformers/ – Quy