打交道時,如何在換補償處理的可選值,我有對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