将 Scala 流转换为流(给定流的后缀)的运算符或方法



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

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

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

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

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

循环访问此序列的尾部。第一个值将是这个 序列和最后一个将是一个空序列,其中 干预值是连续应用尾部的结果。

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

然后,如果需要,可以将迭代器简单地转换为流。

相关内容

最新更新