Я получаю ошибку несоответствия типа, и я не могу понять, почему.Для понимания и фьючерсов есть несоответствие типа
found: scala.concurrent.Future[UserSales]
required: Option[UserSales]
userSalesOpt <- getOrSetUserSales(userSalesCacheKey)
I have tried creating another for {} clause but that didn't solve the issue. What should I be doing as I am stuck??
Вот методы, которые я использую:
UserDAO
def getByUsername(name: String): Future[Option[User]]
UserController:
def getOrSetUserSales(key: String): Future[Option[UserSales]]
class UserController ... {
def index = Action.asyc {
val maybeUserSalesOpt: Future[Option[UserSales]] = for {
userOpt <- userDao.getByUsername(name)
} yield {
for {
user <- userOpt
userSalesCacheKey = name + "whatever"
userSalesOpt <- getOrSetUserSales(userSalesCacheKey)
} yield {
for {
userSales <- userSalesOpt
} yield userSales
}
}
for {
maybeUserSales <- maybeUserSalesOpt
} yield {
if(maybeUserSales.isDefined) {
Ok("found")
} else {
Ok("error")
}
}
}
}
Но мой тип возврата - будущее [Option [UserSales]]? – Blankman
В цикле 'user <- userOpt ...' вы начинаете с Option (userOpt), и вы возвращаете Future (это происходит из' getOrSetUserSales() '). Это то, что компилятор жалуется. – marios