-1

问题很简单:将元素流转换为元素流,其中第一个元素是原始流,第二个是原始流的尾部,第三个是尾部的尾部,依此类推。 ..

示例:(1, 2, 3, ...) 变为 ((1, 2, 3, ...), (2, 3, 4, ...), (3, 4, 5, ...) , ...)

我的问题不完全是如何获得这个流,因为它很简单,而是是否已经有一个方法或一个运算符以惯用的方式做到这一点。如果没有这样的方法,我也在为这个操作寻找一个合适的名称。我觉得展开或展开并没有真正确定它,而是沿着这些思路。

更新:背景是我有一个类型的函数,Stream[A] => B我想将它映射到输入流的所有后缀的流上。Stream[Stream[A]]因此,将流转换为第一个以便对其进行映射似乎是可行的。我需要一个正确的名称,因为这似乎是我的代码中反复出现的模式。

4

1 回答 1

0

我终于自己找到了答案:.tails完全符合我的要求。从文档:

迭代这个序列的尾部。第一个值将是这个序列,最后一个值将是一个空序列,中间值是连续应用 tail 的结果。

返回:该序列所有尾部的迭代器

如果需要,迭代器可以轻松地转换为流。

于 2020-01-26T13:54:07.020 回答