Я хотел бы найти некоторый объект (Fight) в БД и на основе его присутствия вернуть этот конкретный объект или создать новый объект в БД и вернуть вновь созданный объект. Я реализовал следующую функцию:Будущее будущего Scala
def findOrCreateFight(firstBoxer: BoxersRow, secondBoxer: BoxersRow, eventDate: java.sql.Date): Future[FightsRow] = {
for {
fight <- findByBoxersAndDate(firstBoxer, secondBoxer, eventDate)
} yield {
fight match {
case Some(f) => f
case None => createAndFindFight(firstBoxer, secondBoxer, eventDate)
}
}
}
функция findByBoxersAndDate возвращает будущее [Опция [FightsRow]] объекта и функция возвращает createAndFindFight Future [FightsRow]. Теперь компилятор показывает ошибку в строке с функцией createAndFindFight:
тип несоответствие; найдено: scala.concurrent.Future [models.Tables.FightsRow] требуется: models.Tables.FightsRow
КИ, так что мне нужно, чтобы получить законченный результат этого будущего в 'случае None'. Я думал о функции onComplete, но он возвращает Unit, а не желаемый объект FightsRow. Любое предложение, как исправить мою функцию, чтобы иметь лучший эффект scala-able? :)
С наилучшими пожеланиями
Он работает! Я очень ценю вашу помощь! – Gandalf
@ Gandalf Ваш следующий шаг - поднять полезные ответы и принять лучший. –