問題タブ [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 投票する
0 に答える
99 参照

scala - スタックオーバーフロー例外を回避するために、列挙子ループファイルコンテンツを再帰的に作成する方法

最近、私はScalaz チュートリアルで遊んでいました: Rúnar によって書かれた反復ベースの I/O

ファイルの列挙の実装について質問があります。

私のコードの理解: enumReader はiterateeからDoneまたはContのシグナルを取得しています。 Contの場合、 loop を再帰的に呼び出します。

ただし、このループは末尾再帰ではありません。注釈@tailrecを使用してコンパイル エラーを発生させます。したがって、 enumReader が大きなファイルを読み込もうとすると、stackoverflow exceptionが発生することが問題だと思います。

また、難しいと思う理由は、通常、通常の再帰を末尾再帰に変更したい場合、パラメーターでアキュムレータを使用するためですが、この場合、それは関数 IterV[String, A] = です> IO[IterV[文字列, A]]

編集:さらに、 CountのようなIterateeメソッドにも同じstackoverflow例外があると思います。

誰かがこれをリファクタリングする方法を教えてもらえますか?

よろしくお願いします

0 投票する
1 に答える
14229 参照

scala - Scalaz iteratees: 「リフティング」 `EnumeratorT` を `IterateeT` に合わせて「より大きな」モナドにする

EnumeratorTと が対応する場合、IterateeTそれらを一緒に実行できます。

列挙子モナドが iteratee モナドよりも「大きい」場合、一致するように iteratee を「リフト」するupか、より一般的には使用できます。Hoist

しかし、反復モナドが列挙子モナドよりも「大きい」場合はどうすればよいでしょうか?

HoistのインスタンスEnumeratorTも、明らかな「リフト」メソッドもないようです。

0 投票する
2 に答える
212 参照

scala - 列挙されたファイルを閉じるには?

私が持っているアクションで言ってください:

リーダー/ストリームを閉じるには?

0 投票する
1 に答える
829 参照

scala - Play Scala で Iteratee と Enumerator を使用してデータを S3 にストリーミングする

バイト配列を S3 にストリーミングしたい Play Framework アプリケーションを Scala で構築しています。これを行うためにPlay-S3ライブラリを使用しています。ドキュメントセクションの「マルチパートファイルのアップロード」は、ここで関連するものです。

私は自分のアプリケーションで同じことをしようとしていますが、Iteratees とEnumerators を使用しています。

ストリームと非同期性により、少し複雑になりますが、これまでのところ、次のようになります (注uploadTicketはコードの前半で定義されています)。

すべてが問題なくコンパイルおよび実行されます。実際、"Success"印刷されますが、S3 にファイルが表示されることはありません。

0 投票する
3 に答える
1634 参照

scala - Play / Logging / Print Response Body / Run over enumerator / 本体のバッファリング

Play フレームワークで応答本文を出力する方法を探しています。次のようなコードがあります。

現在、コメントアウトされたコードは私が望むように機能していません。つまり、次のように出力されます。

そのため、Enumerator[Array[Byte]] から文字列を取得する方法を見つける必要があります。これを読んで列挙子の概念を把握しようとしました: http://mandubian.com/2012/08/27/understanding-play2-iteratees-for-normal-humans/

だから...、私がそれを正しく理解していれば:

  1. 列挙子を文字列に変換する過程で、列挙子を枯渇させるべきではありません。そうしないと、クライアントは何も受け取りません。

  2. T / フィルターメカニズムを実装する方法を理解したとしましょう。しかし、それでは...非ブロッキングストリーミングフレームワークとしてのPlayフレームワークの目的を無効にしないでしょうか(toStringを呼び出す前に、メモリ内にバイトの完全な配列を構築し、最終的にログに記録するため)?

では、応答をログに記録する正しい方法は何ですか?

前もってありがとう、ラカ

0 投票する
1 に答える
115 参照

scala - ステートフル アルゴリズムから列挙型を作成する

入力を段階的に受け取り、段階的に出力を生成するステートフル アルゴリズムがあります。入力と出力の数は無関係です。つまり、入力は 0 個以上の出力を生成する可能性があります。

私はそれをEnumerateePlay フレームワークで に変換しようとしていますが、始めるのに苦労しています。

私のアルゴリズムには、ローカルの可変状態と同期操作があり、次のようになります

mapfilterなどの実装を で研究しましたが、Enumeratee.scalaある程度は理解しています。しかし、もっと複雑なものの独自の実装を作成する方法がわかりません。

このアルゴリズムを に変換する方法を説明/実演していただけEnumerateeますか?

0 投票する
1 に答える
199 参照

mongodb - ReactiveMongo を使用して、キャップされたコレクションから中断されるまでジョブを処理する

jobs_queueMongoDBにコレクションがあります。これは、テーラブル カーソルを使用してポーリングしている上限付きコレクションです。

これは通常の Scala から呼び出されるAppため、Akka や Play のラッピングはまったくありません。

App明示的に から抜け出すまで が終了しないようにする最も適切な方法はIteratee.foreach何ですか? また、より単純な (多少エレガントでなくても) 方法があれば、play-iteratees をまったく使用する必要はありません。


PS 私はコレクションがキャップされていることを確認します:

PPS

また、このビットのロジックをどのように設計したか、およびアプローチを再考して実装を少し見直すことでこれを解決する方法についての批判も歓迎します。