Akka是在试图传达Source.combine
不应该与源代码集合一起使用吗?还是我在函数定义上有些愚蠢?
Akka Source.combine
要求在vararags之前有第一个和第二个源。函数定义如下:
def combine[T, U](first: Source[T, _], second: Source[T, _], rest: Source[T, _]*)(
strategy: Int => Graph[UniformFanInShape[T, U], NotUsed]
我只想做一些像这样的事情:
val sources : Seq[Source[Int,_]] = ???
Source.combine(sources:_*)(Merge(_))
我不知道我的sources
是否会有1个、2个或多个源代码。所以写案例会增加几行代码。这不是什么大问题,但我觉得我遗漏了一些东西。这是akka流的反模式吗?
1条答案
按热度按时间z9smfwbn1#
模式
first: Source[T, _], second: Source[T, _], rest: Source[T, _]*
的目的是确保至少向方法传递2个(可能更多)源代码。如果方法签名允许
sources:_*
,则可以传递空vararg或仅传递单个元素。在您的示例中,如果sources是
Seq
,我只会对源进行模式匹配,将其拆分为第一个和第二个元素以及其余元素: