繁体   English   中英

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

[英]Operator or method for turning a Scala stream into a stream of streams (suffixes of given stream)

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

例子: (1, 2, 3, ...) 变成 ((1, 2, 3, ...), (2, 3, 4, ...), (3, 4, 5, ...) , ...)

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

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

我终于自己找到了答案: .tails正是我正在寻找的。 从文档:

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

返回:一个遍历这个序列所有尾部的迭代器

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM