Tüm bu yöntemler, bir akım halinde iki akım katılması için gereklidir. Örneğin, bir Source
dışarı Source
ve Flow
oluşturabilir veya bir Flow
ve Sink
dışına Sink
oluşturabilir veya bir Flow
Flow
iki takım s oluşturabilir.
Bunun için iki temel işlem vardır, to
ve via
. Eski bir bağlanmaya izin veren ya da ikinci Source
veya Flow
Flow
bir bir bağlanmaya izin verirken bir Source
veya Sink
bir Flow
: Referans için
source.to(sink) -> runnable graph
flow.to(sink) -> sink
source.via(flow) -> source
flow1.via(flow2) -> flow
, bir çalıştırılabilir grafiktir reaktif tam olarak bağlı olan maddileştirilmeye ve yürütülmeye hazır olan akış. Çeşitli işlemlerin sürümleri, işlem içerisine dahil edilen akışların somutlaşmış değerlerinin nasıl birleştirileceğini belirtme olanağını sağlar. Bildiğiniz gibi, her bir akış, akıntı gerçekleştiğinde elde edilebilecek bir maddi değeri vardır. Örneğin, Source.queue
, programınızın başka bir bölümü tarafından çalışan akışa öğeler yaymak için kullanılabilecek bir kuyruk nesnesi verir. kaynakları ve akımlarına
Varsayılan
to
olarak
ve via
sadece argümanının gerçekleşmiş değerini görmezden bunun açık denir akışının hayata değerini tutar: Bazen
source.to(sink) yields mat.value of source
source.via(flow) yields mat.value of source
flow.to(sink) yields mat.value of flow
flow1.via(flow2) yields mat.value of flow1
Ancak, her iki tutmak için gereken maddi değerler veya bunları bir şekilde birleştirmek için. Bu, Mat
yönteminin varyantlarına ihtiyaç duyulduğunda.
source.to(sink) equivalent to source.toMat(sink)(Keep.left)
flow1.via(flow2) equivalent to flow1.viaMat(flow2)(Keep.left)
Örneğin, Keep.both
yöntemi kullanabilir, her iki değeri hayata tutmak, ya da eğer: Bunlar kombine akımın bir hayata değeri hem de işlenen hayata değerleri alır ve döner birleştirme işlevini belirlemek için izin
source.toMat(sink)(Keep.both) yields a tuple (mat.value of source, mat.value of sink)
Bu büyük bir büyük bir cevap, çok düzgün: sadece "doğru" terimin mat.value gerekiyorsa,
Keep.right
yöntemi kullanabilirsiniz! Bu arada sadece bir noktayı açıklığa kavuşturmak için. Ben source.to (sink) olarak varsayılan varsayılan kaynak değerini (sol) olarak tutmak garip buluyorum. Lavabo bir kıvrımsa, katlamanın sonucuyla ilgileneceğime inanıyorum. Bu durumda, tek yolu tomat kullanmak olacaktır. Aslında sadece varsayılan değeri sol değerini kullanmak iken en sık kullanım durumu doğru değer ile devam etmektir. Belki bunun hakkında birkaç yorum yapabilirsin. Bunu doğru şekilde düşünemiyorum. – MaatDeamon@MaatDeamon, bunun nedenlerini tam olarak bilmiyorum, ancak tüm bu işlemlerin genel olarak hem "Kaynak" hem de "Akış" ın bir supertraitunda uygulandığı gerçeğiyle bağlantılı olabilir, bu nedenle bazı işlemlerin bazı parametreleri 'Aktarım' için anlamı 'Kaynak' için daha az anlam ifade edebilir ve bunun tersi de geçerlidir. –