Оператор или метод для превращения потока Scala в поток потоков (суффиксы данного потока) - PullRequest
0 голосов
/ 26 января 2020

Проблема проста: преобразовать поток элементов в поток потоков тех элементов, где первый элемент является исходным потоком, второй - хвостом исходного потока, третий - хвостом хвоста, и и так далее ...

Пример: (1, 2, 3, ...) становится ((1, 2, 3, ...), (2, 3, 4, ...), (3, 4, 5, ...), ...)

Мой вопрос не совсем так, как получить этот поток, потому что это просто, но есть ли уже метод или оператор, который делает это идиоматическим образом. Если такого метода нет, я также ищу подходящее имя для этой операции. Я чувствую, что развернуть или развернуть это не на самом деле, но что-то вроде этого.

Обновление: На заднем плане у меня есть функция типа Stream[A] => B, и я хочу отобразить ее в потоке всех суффиксов входного потока. Поэтому представляется целесообразным сначала преобразовать поток в Stream[Stream[A]], чтобы отобразить его. Мне нужно правильное имя для него, потому что это, кажется, повторяющийся шаблон в моем коде.

1 Ответ

0 голосов
/ 26 января 2020

Я наконец нашел ответ сам: .tails делает именно то, что я ищу. Из документов:

Перебирает хвосты этой последовательности. Первым значением будет эта последовательность, а последним будет пустая последовательность с промежуточными значениями - результаты последовательных применений tail.

возвращает: итератор для всех хвостов эта последовательность

Итератор при необходимости может быть тривиально превращен в поток.

...