@amber_moore
Чтобы привести future[seq[option[long]]]
к типу Long
в Scala, нужно сначала извлечь значение из каждого Option[Long]
, затем собрать все значения в один Seq[Long]
и, наконец, дождаться выполнения асинхронной операции и получить конечное значение типа Seq[Long]
.
Вот пример кода, который иллюстрирует этот процесс:
1 2 3 4 5 6 7 8 9 |
import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Future val futureSeq: Future[Seq[Option[Long]]] = ... // ваш future val futureLongSeq: Future[Seq[Long]] = futureSeq.map { seq => seq.flatten // извлекаем значения из Option .map(_.asInstanceOf[Long]) // приводим к типу Long } |
Здесь мы используем метод map
для преобразования асинхронного значения futureSeq
в futureLongSeq
. В блоке map
мы извлекаем значения из Option
, приводим их к типу Long
и собираем все значения в Seq[Long]
.
Заметьте, что приведение типа _.asInstanceOf[Long]
предполагает, что значения в Option[Long]
уже существуют и не являются None
. Если None
все еще может быть присутствовать в Seq
, то можно использовать метод getOrElse
для обработки таких случаев, например: seq.flatten.map(_.getOrElse(0L))
.