object Main extends App {
val p1 = Promise[Option[String]]()
val p2 = Promise[Option[String]]()
val f1 = p1.future
val f2 = p2.future
val res = (for{
file1Opt <- f1
file2Opt <- f2
file1 <- file1Opt
file2 <- file2Opt
} yield {
combineFiles(file1, file2)
}).fallbackTo(Future.successful("Files not found"))
Thread.sleep(2000)
println("XXXXXXXXXXXXXXXXXXX")
p1.success(Some("file one"))
p2.success(Some("file two"))
val finalData = res.map(s =>
s + " " + "add more data to the file"
)
finalData.map(println(_))
def combineFiles(f1: String, f2: String): String = {
f1 + " " + f2
}
}
У меня есть две функции, которые возвращают Future[Option[String]]
, и мне нужно объединить две строки в одну строку.
Я хочу, чтобы вывод был комбинацией двух строк и нижнего колонтитула: «файл, один файл, два, добавьте больше данных в файл» или по умолчанию, когда один или оба Future
s возвращают None
: «Файлы не найдены, добавьте больше данных в файл».
Как этого добиться?
Ошибка компилятора:
Error:(16, 11) type mismatch;
found : Option[String]
required: scala.concurrent.Future[?]
file1 <- file1Opt
^