Aşağıdakileri yapmak için bir Akka akışları birleştiricisi var mı (yoksa bu etkiyle ilgili bir şey)? (Şimdilik and
diyelim.)İki Akış nasıl yan yana oluşturulur?
(flow1: Flow[I, O, Mat]).and[O2](flow2: Flow[I, O2, Mat]): Flow[I, (O, O2), Mat]
semantik kaynağı ne olursa olsun, onun elemanları hem Flow
s aktarılmasını sağlayacak ve elde edilen çıktılar bir demet olarak yeni Flow
birleştirilebilir olacağını olurdu. (Kategori kuramdan oklarla aşina olanlar fonksiyonel programlama aromalı, ben &&&
gibi bir şey arıyorum.) Yani zip
ve alsoTo
ilgili görünüyordu kütüphanede iki combinators vardır
. Ancak, eski, bir SourceShape
ve ikincisi, bir SinkShape
kabul eder. Ne de bir GraphShape
kabul ediyorum. Bu neden böyle?
Benim kullanım durumu aşağıdaki gibi bir şey:
someSource
.via(someFlowThatDoesWhateverItWasDoingEarlierButNowAlsoEmitsInputsAsIs)
.runWith(someSink)
Bu çalışır, ancak ben arıyorum:
someSource
.via(someFlowThatReturnsUnit.and(Flow.apply))
.runWith(someSink)
.and
gibi bir şey bulamayan böyle benim özgün Flow
modifiye Daha temiz, daha karmaşık bir çözüm.
bir akış kesinlikle 1 değildir. (GraphDSL kullanabilir ve Yayın + Birleştirme kullanabilirsiniz) –