Как преобразовать Stream[IO, List[A]] в Stream[IO, A]

Я хочу проанализировать файл json, который выводит коллекцию A. Подпись Output IO[List[A]]

Как преобразовать это значение в Stream: Stream[IO, A]? Я могу преобразовать в Stream[IO, List[A]], но это не то, что я хочу

fs2.Stream.eval(input).flatMap(x => fs2.Stream.apply(x)) Спасибо


person nam    schedule 10.04.2018    source источник


Ответы (2)


Пытаться

fs2.Stream.eval(output).flatMap(x => fs2.Stream.apply(x: _*))

Что делает `:_*` (звезда подчеркивания двоеточия) в Scala?

person Dmytro Mitin    schedule 10.04.2018

Вы также можете использовать Stream.emits, который принимает Seq, поэтому fs2.Stream.eval(output).flatMap(fs2.Stream.emits(_)).

Это более эффективно, чем использование varargs с apply, поскольку позволяет избежать переноса и развертывания структуры последовательности — это может значительно сэкономить в случае специализированных коллекций примитивов.

person Daenyth    schedule 19.06.2018
comment
Большое спасибо! Меня раздражало количество преобразований vararg, с которыми я имел дело. Это намного чище - person Henry Parker; 12.07.2021