问题标签 [iterate]

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 回答
212 浏览

scala - 为什么这个 Scalaz 7 枚举器会泄漏内存?

以下定义导致内存泄漏:

通过以下测试可以观察到泄漏:

但是,一个小的更改(即移动xs.next调用)会阻止泄漏:

为什么?

我有一个模糊的概念,即解释与闭包的参考模式有关,但我无法提出这种行为的具体原因。我正在尝试追踪不同的内存泄漏,并且我怀疑(希望?)了解此泄漏可能有助于确定导致该泄漏的原因。

0 投票
2 回答
157 浏览

haskell - 通过传入 n+1 个参数来定义 n 个参数的函数?

在什么情况下可以f :: a -> b -> c -> d定义函数

我不会认为这是可能的,但在查看enumerator包裹时,我发现:

资源

显然我们有一个三个参数的函数,它是通过传入四个参数来实现的。同样,签名enumHandleRange

表示它有四个参数,但我们在enumFileRange上面通过传入五个参数来调用它:let iter = enumHandleRange 4096 offset count h step.

有人知道这是如何工作的吗?

0 投票
1 回答
260 浏览

scala - 如何从单个枚举器(分区、拆分、..)中生成多个枚举器

Enumerators是否可以从单个中创建多个Enumerator?我正在寻找的是相当于List.partition返回 a (List[A], List[A]),例如

所以理想情况下,我想在 Enumerator 上应用一个转换,它允许我对数据进行分区,以便得到一(Enumerator[T], Enumerator[T])对。

使用 Play 的 Iteratee API 可以轻松实现吗?

我找到的最接近的Enumeratee.grouped方法是允许对输入进行分组的方法,但据我所知,如果我想要的只是 2 个分区(组),我将不得不消耗整个Enumerator来获得结果。但我希望生成的枚举器从输入异步馈送。

0 投票
2 回答
2726 浏览

scala - Scala 流媒体库差异(Reactive Streams/Iteratee/RxScala/Scalaz...)

我正在关注 Coursera 上的 Scala 函数式反应式编程课程,我们处理 RxScala Observables(基于 RxJava)。

据我所知,Play Iteratee 的库看起来有点像 RxScala Observables,其中 Observables 有点像 Enumerators,Observers 有点像 Iteratees。

还有 Scalaz Stream 库,也许还有其他一些?


所以我想知道所有这些库之间的主要区别。在哪种情况下,一个可能比另一个更好?


PS:我想知道为什么 Martin Odersky 没有为他的课程选择 Play Iteratees 库,因为 Play 在 Typesafe 堆栈中。这是否意味着 Martin 更喜欢 RxScala 而不是 Play Iteratees?


编辑: Reactive Streams计划刚刚宣布,作为尝试standardize a common ground for achieving statically typed, high-performance, low latency, asynchronous streams of data with built-in non-blocking back pressure

0 投票
2 回答
1281 浏览

scala - 在单个 HTTP 连接上同时输入和输出数据

流数据播放,非常容易。
这是我打算如何做的一个简单示例(如果我做错了,请告诉我):

现在,如果你得到这个动作的服务,你会得到类似的东西:

在随机时间过去后接收每一行。
现在,假设我想在将数据从服务器流式传输到客户端时保留这个简单的示例,但我也想支持从客户端到服务器的完整数据流式传输。

所以,假设我正在实现一个BodyParser将输入解析为List[Future[String]]. 这意味着,现在,我Action可能看起来像这样:

但这仍然不是我想要实现的。在这种情况下,我只会请求完成后从请求中获取正文,并且所有数据都已上传到服务器。但我想开始服务请求。一个简单的演示,就是将任何接收到的线路回显给用户,同时保持连接处于活动状态。

所以这是我目前的想法:
如果我BodyParser会返回 anEnumerator[String]而不是List[Future[String]]
在这种情况下,我可以简单地执行以下操作:

所以现在,我面临着如何实现这样一个BodyParser. 更准确地说我到底需要什么,好吧:
我需要接收数据块以解析为字符串,其中每个字符串都以换行符结尾\n(尽管可能包含多行......)。每个“行块”都将由一些(与此问题无关的)计算处理,这将产生 aString或更好的 a Future[String],因为此计算可能需要一些时间。此计算的结果字符串应在准备好时发送给用户,就像上面的随机示例一样。这应该在发送更多数据的同时发生。

我已经研究了几种试图实现它的资源,但到目前为止都没有成功。例如scalaQuery 播放迭代-> 看起来这个人正在做与我想做的事情相似的事情,但我无法将其转化为可用的示例。(并且从 play2.0 到 play2.2 API 的差异无济于事......)

所以,总结一下:这是正确的方法(考虑到我不想使用WebSockets)?如果是这样,我该如何实施BodyParser

编辑:

我刚刚偶然发现有关此问题的播放文档的注释,说:

注意:也可以通过使用由BodyParser接收输入数据块的自定义处理的无限 HTTP 请求以另一种方式实现相同类型的实时通信,但这要复杂得多。

所以,我不会放弃,现在我确定这是可以实现的。

0 投票
0 回答
148 浏览

scala - Enumerator / Iteratee 应用程序永远不会完成

当我从这里尝试以下“Hello World”示例时,应用程序将永远不会停止。是 Iteratee,等待更多的输入吗?我试图这样

但这无济于事。

在 Iteratee 使用 Enumerator 中的所有元素完成后,我必须做什么才能使应用程序停止?

0 投票
2 回答
146 浏览

scala - playframework 枚举器滚动文件内容,因为字符串有奇怪的字符

我想在网页上显示一个滚动日志文件,我使用Enumerator.fromFile()方法并将字节数组映射到字符串,但是我得到了一些奇怪的字符,比如

如何正确显示内容?

0 投票
1 回答
525 浏览

playframework - Play 框架中的异步 WebSocket

我从以下帖子中获得了以下示例:

http://blog.tksfz.org/2012/10/12/websockets-echo-using-play-scala-and-actors-part-i/

这里的问题是上面的代码将使用哪个执行上下文?我尝试在我的 Play 应用程序中使用它。Hers 是我为默认执行上下文配置的:

如何将自定义执行上下文附加到上面的示例代码?

0 投票
1 回答
289 浏览

scala - 通过 Enumeratee 将元素“附加”到 Enumerator

我真的觉得我在做一些设计上不可能的事情,但我真的很想完全了解 Play Iteratees 是如何工作的......

我目前正在编写一个函数,该函数Enumerator通过Enumeratee. 到目前为止,我进行这种特定的转换没有问题。但我想在Enumerator. 我想到了使用mapInputor mapInputFlatten,因为我可以看到当时Input正在处理哪个。我目前对这个问题的解决方案如下:

但是,我最终得到java.lang.RuntimeException: diverging iteratee after Input.EOF. 这是 Scala 2.10.2 和 play-iteratees 2.1.5

0 投票
1 回答
393 浏览

scala - 将 Enumeratee 转换为 Future[List] Scala

在 Play Scala 框架中转换为的标准方法是什么EnumeratorFuture[List]