同じマテリアライズ値を持つ複数のソースを組み合わせる

Yair Halberstadt

combineakkaストリーム演算子には、次の署名があります。

  def combine[T, U](first: Source[T, _], second: Source[T, _], rest: Source[T, _]*)(
      strategy: Int => Graph[UniformFanInShape[T, U], NotUsed]): Source[U, NotUsed]

私は複数のソースを持っていますが、すべて同じMatです。ホイスト保存でそれらを組み合わせる必要がありMatます。

したがって、次の署名を持つ関数が必要です。

  def combine[T, U](first: Source[T, Mat], second: Source[T, Mat], rest: Source[T, Mat]*)(
      strategy: Int => Graph[UniformFanInShape[T, U], NotUsed]): Source[U, Seq[Mat]]

既存のcombineMatものは2つの入力のみを受け入れます。無制限が必要です。

Akkaのcombineの実装は次のとおりです。

  def combine[T, U](first: Source[T, _], second: Source[T, _], rest: Source[T, _]*)(
      strategy: Int => Graph[UniformFanInShape[T, U], NotUsed]): Source[U, NotUsed] =
    Source.fromGraph(GraphDSL.create() { implicit b =>
      import GraphDSL.Implicits._
      val c = b.add(strategy(rest.size + 2))
      first ~> c.in(0)
      second ~> c.in(1)

      @tailrec def combineRest(idx: Int, i: Iterator[Source[T, _]]): SourceShape[U] =
        if (i.hasNext) {
          i.next() ~> c.in(idx)
          combineRest(idx + 1, i)
        } else SourceShape(c.out)

      combineRest(2, rest.iterator)
    })

sをSourceShapeサポートていないものを使用しているMatので、ここではうまくいかないと思います。

一方、複数のストリームでは機能しないcombineMat使用の実装viaMat

これは可能ですか?

Yair Halberstadt

次の作品:

import akka.stream.scaladsl.GraphDSL.Implicits._
import akka.stream.scaladsl.{GraphDSL, Source}
import akka.stream.{Graph, SourceShape, UniformFanInShape}

import scala.collection.immutable

object Combine {
  def combine[T, U, Mat](sources: immutable.Seq[Source[T, Mat]])(strategy: Int => Graph[UniformFanInShape[T, U], Mat]): Source[U, immutable.Seq[Mat]] = {
    Source.fromGraph(GraphDSL.create(sources) {
      implicit builder => {
        sourceShapes => {
          val target = builder.add(strategy(sources.size))

          for ((source, index) <- sourceShapes.zipWithIndex) {
            source ~> target.in(index)
          }

          SourceShape(target.out)
        }
      }
    })
  }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じ値を持つ複数の行を組み合わせる

分類Dev

同じキーを持つ3つのマップを組み合わせる

分類Dev

同じインデックスを持つ複数の行を組み合わせて、各行がパンダで真の値を1つだけ持つ方法は?

分類Dev

R:同じ列名を持つ2つのリストを組み合わせる

分類Dev

同じ属性を持つ2つの異なるテーブルの値を組み合わせる方法

分類Dev

Pythonで同じインデックスを持つ2つのシリーズを組み合わせる方法は?

分類Dev

複数のマップを複数の同じキーと値としてリストと組み合わせる方法

分類Dev

辞書のリストで2つの同じ値を同じキーと組み合わせる

分類Dev

同じヘッダーを持つテキストファイルを組み合わせる

分類Dev

複数のパンダシリーズを同じ列名で組み合わせるが、インデックスは異なる

分類Dev

ルビーで同じサイズの複数の配列を組み合わせる方法

分類Dev

リストのリストまたは複数のリストを要素ごとに組み合わせることができるすべての方法は何ですか?同じインデックスを持つ各リストのアイテムを操作しますか?

分類Dev

2つの列が同じ値を持つ2つのテーブルを組み合わせたSQL

分類Dev

角度のあるマテリアルは、テーブル内の同じ列の値を組み合わせ、複数の行に対して単一の値のみを表示します

分類Dev

クエリを介して同じForeignKeyフィールドを持つ複数の行を組み合わせる

分類Dev

Pythonで同じキーを持つ2つの異なる辞書の値を組み合わせる方法

分類Dev

同じインデックスを持つ行を組み合わせる

分類Dev

同じリソースのパルギンを組み合わせる方法は?

分類Dev

SQLServerの条件を持つ同じテーブルの値の組み合わせを検索します

分類Dev

dictのリストで同じキーの値を組み合わせる

分類Dev

Pythonで同じキーで異なる値を持つ2つの辞書を組み合わせる

分類Dev

同じ主キーを持つ2つのテーブルのデータを組み合わせる

分類Dev

同じキーを持つ2つの配列からの値を組み合わせる

分類Dev

3つの配列を同じインデックスを持つ1つに組み合わせる方法-JavaScript

分類Dev

同じ値を持つ同じ引数のサブセットを含む2つの関数を1つの関数に組み合わせる方法は?

分類Dev

Rの同じ位置インデックスを持つベクトルの値の組み合わせ

分類Dev

Python-重複するキー値を持つ「zip」を使用して複数のリストを組み合わせる

分類Dev

Googleスプレッドシートの平均で、1つのセルと同じ値の複数のセルを組み合わせる

分類Dev

同じキー値を持つ配列内のJavaScriptオブジェクトを組み合わせる

Related 関連記事

  1. 1

    同じ値を持つ複数の行を組み合わせる

  2. 2

    同じキーを持つ3つのマップを組み合わせる

  3. 3

    同じインデックスを持つ複数の行を組み合わせて、各行がパンダで真の値を1つだけ持つ方法は?

  4. 4

    R:同じ列名を持つ2つのリストを組み合わせる

  5. 5

    同じ属性を持つ2つの異なるテーブルの値を組み合わせる方法

  6. 6

    Pythonで同じインデックスを持つ2つのシリーズを組み合わせる方法は?

  7. 7

    複数のマップを複数の同じキーと値としてリストと組み合わせる方法

  8. 8

    辞書のリストで2つの同じ値を同じキーと組み合わせる

  9. 9

    同じヘッダーを持つテキストファイルを組み合わせる

  10. 10

    複数のパンダシリーズを同じ列名で組み合わせるが、インデックスは異なる

  11. 11

    ルビーで同じサイズの複数の配列を組み合わせる方法

  12. 12

    リストのリストまたは複数のリストを要素ごとに組み合わせることができるすべての方法は何ですか?同じインデックスを持つ各リストのアイテムを操作しますか?

  13. 13

    2つの列が同じ値を持つ2つのテーブルを組み合わせたSQL

  14. 14

    角度のあるマテリアルは、テーブル内の同じ列の値を組み合わせ、複数の行に対して単一の値のみを表示します

  15. 15

    クエリを介して同じForeignKeyフィールドを持つ複数の行を組み合わせる

  16. 16

    Pythonで同じキーを持つ2つの異なる辞書の値を組み合わせる方法

  17. 17

    同じインデックスを持つ行を組み合わせる

  18. 18

    同じリソースのパルギンを組み合わせる方法は?

  19. 19

    SQLServerの条件を持つ同じテーブルの値の組み合わせを検索します

  20. 20

    dictのリストで同じキーの値を組み合わせる

  21. 21

    Pythonで同じキーで異なる値を持つ2つの辞書を組み合わせる

  22. 22

    同じ主キーを持つ2つのテーブルのデータを組み合わせる

  23. 23

    同じキーを持つ2つの配列からの値を組み合わせる

  24. 24

    3つの配列を同じインデックスを持つ1つに組み合わせる方法-JavaScript

  25. 25

    同じ値を持つ同じ引数のサブセットを含む2つの関数を1つの関数に組み合わせる方法は?

  26. 26

    Rの同じ位置インデックスを持つベクトルの値の組み合わせ

  27. 27

    Python-重複するキー値を持つ「zip」を使用して複数のリストを組み合わせる

  28. 28

    Googleスプレッドシートの平均で、1つのセルと同じ値の複数のセルを組み合わせる

  29. 29

    同じキー値を持つ配列内のJavaScriptオブジェクトを組み合わせる

ホットタグ

アーカイブ