问题标签 [scala-streams]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
767 浏览

scala - Scala 中的流无法解析符号 #:: 错误

我一直在尝试将 Bloxorz 作业作为Scala 功能程序设计课程的一部分,并一直在尝试向 Stream 添加一个元素,如下所示,但我得到了:

无法解析符号#::

这段代码中有一些非常小的、明显的错误。我在这里做错了什么?

0 投票
2 回答
3295 浏览

scala - How to abruptly stop an akka stream Runnable Graph?

I am not able to figure out how to stop akka stream Runnable Graph immediately ? How to use killswitch to achieve this? It has been just a few days that I started akka streams. In my case I am reading lines from a file and doing some operations in flow and writing to the sink. What I want to do is, stop reading file immediately whenever I want, and I hope this should possibly stop the whole running graph. Any ideas on this would be greatly appreciated.

Thanks in advance.

0 投票
1 回答
579 浏览

scala - Scala 中惰性流的第一个元素

这是一个最小的例子,我可以定义一个函数,通过

然后我可以将一个惰性整数流定义为

令我惊讶的是,取这个流的第一个元素是 2 而不是 1

在这个简单的例子中,我可以在整数的定义中使用 0 而不是 1 来实现我想要的结果,但是通常如何设置一个流以使初始值不丢失?就我而言,我正在设置一个迭代算法,并且想知道初始值。

编辑:此外,我从来没有理解导致以下语法失败的设计选择:

我发现用括号括起来很麻烦,有没有我不知道的速记?

0 投票
1 回答
223 浏览

scala - 在 Akka Streams 中实现 ChopBy

在回答这个问题时,Odomontois 展示了如何实现一个惰性分组运算符,它可以通过一个键对预先排序的流进行分组,而无需将整个内容存储在内存中。有没有办法用 Akka 的流(即源对象)做这样的事情?或者,有没有办法从 Akka 源中提取一个常规的 Stream 对象,这样我就可以使用 Odomontois 的chopBy?

这是一个完全失败的尝试,它不起作用:

0 投票
0 回答
143 浏览

scala - 如何将 U => Seq[T] 转换为 Stream[U=>T]

我正在尝试解决这个问题。我想在 Scala 中实现这个功能

我想解决方案应该使用 Stream,但我不知道如何解决这个问题。

编辑

我将尝试描述导致我遇到此问题的用例。我正在创建一个 DSL 来表达从不同数据源中提取的数据。DSL 允许定义这样的提取(U 是源类型,T 是提取类型)

例如,我希望能够结合所有这些映射来构建新的 Source

当我试图实现时,我问的功能出现了

但也许有更好的方法

0 投票
1 回答
716 浏览

scala - 如何将 Akka 源转换为 scala.stream

我已经有一个Source[T],但我需要将它传递给一个需要Stream[T].

我可以.run获取源并将所有内容具体化到一个列表中,然后.toStream对结果执行一个操作,但这会删除我想要保留的惰性/流方面。

这是完成此任务的唯一方法还是我错过了什么?

编辑

阅读弗拉基米尔的评论后,我相信我以错误的方式处理我的问题。这是我拥有的和想要创建的简单示例:

因此getMoreData,只需模拟一项服务,该服务按页面返回数据给我。我的第一个目标是创建以下功能:

其中Future[List[Int]]流中的下一个元素取决于前一个元素,从流中前一个 Future 的值中读取最后一个索引。例如 startIndex 为 0:

一旦我有了那个函数,我就想创建一个第二个函数来进一步将它映射到一个简单的Stream[Int]. 例如:

Streams 开始感觉不适合这项工作,我应该只写一个简单的循环。我喜欢流的想法,因为消费者可以按照他们认为合适的方式映射/修改/使用流,而生产者不需要知道它。

0 投票
1 回答
297 浏览

scala - Scala如何获得流的最后计算值?

根据 scala 文档,流实现了惰性列表,其中元素仅在需要时才被评估。例子;

之后在 scala repl;

它会打印出来;

res1: Stream[BigInt] = Stream(0, 1, 1, 2, 3, ?)

由于调用.length.last会导致无限循环,我怎样才能以最有效的方式获得值“3”(最后计算的值)?

0 投票
2 回答
2352 浏览

scala - scala 中的 forEach 显示预期:Consumer[_ >:Path] 实际:(Path) => Boolean

递归删除scala文件中的错误语法问题

0 投票
1 回答
595 浏览

scala - Scala stream iterate and memory management

I have this code:

The idea is to provide an initial state initCompState, a function that generates a new state from the previous one, run this for nIterations and get the final result.

I am not interrested in the intermediary states, and would like them to be garbage collected as soon as they are not needed. From what I read online, Stream retains values when they are recursively defined, which is not the case here.

Is my implementation correct and are the intermediate states between the initCompState and res garbage collected as soon as the next state in the stream has been computed ?

0 投票
1 回答
174 浏览

scala - Scala 工作表不适用于此代码,未显示编译错误

我在 eclipse 的 scala 工作表中尝试了一些东西。这没有显示任何输出,也没有显示任何错误或警告。

我正在尝试 courera odersky 课程中的示例:scala 功能设计 week3 视频。有趣的是,在上面的例子中,如果我删除第一个 println 语句下面的所有内容,我会看到一个评估的输出。

******* 更新 ******** 为了帮助其他读者,我发布了上述程序的更正版本,受到答案的启发。