Scala 如何计算Akka Streams中GraphStage内的聚合?

Scala 如何计算Akka Streams中GraphStage内的聚合?,scala,akka,akka-stream,Scala,Akka,Akka Stream,我在Akka stream中有一个操作符/组件,其目标是在5秒内计算一个值。因此,我使用TimerGraphStageLogic创建了操作符/组件,您可以在下面的代码中看到。为了测试它,我创建了两个源,一个是递增的,另一个是递减的,然后我使用merge形状合并它们,然后使用windowFlowShape,最后以Sink形状发射它们。因为我在另一个PoC中对其进行了测试,所以我确保了它正常工作。在本例中,我正在调整将泛型类型T替换为Int,因为我必须指定我的窗口将聚合什么 但是,我的问题是无法在w

我在Akka stream中有一个操作符/组件,其目标是在5秒内计算一个值。因此,我使用
TimerGraphStageLogic
创建了操作符/组件,您可以在下面的代码中看到。为了测试它,我创建了两个源,一个是递增的,另一个是递减的,然后我使用
merge
形状合并它们,然后使用
windowFlowShape
,最后以
Sink
形状发射它们。因为我在另一个PoC中对其进行了测试,所以我确保了它正常工作。在本例中,我正在调整将泛型类型
T
替换为
Int
,因为我必须指定我的窗口将聚合什么

但是,我的问题是无法在window stage操作符中聚合
Int
值。当我试图执行
sum=sum+elem
时,我在运行时收到一个错误,上面说:

overloaded method value + with alternatives:
  (x: scala.Int)scala.Int <and>
  (x: Char)scala.Int <and>
  (x: Short)scala.Int <and>
  (x: Byte)scala.Int
 cannot be applied to (Int(in class WindowProcessingTimerFlow))
                sum = sum + elem

因为您正在创建一个名为
Int
的类型参数,该参数隐藏类型
Int
定义,其中定义:

class WindowProcessingTimerFlow[Int](silencePeriod: FiniteDuration) extends GraphStage[FlowShape[Int, Int]] {
尝试从中删除泛型:

class WindowProcessingTimerFlow(silencePeriod: FiniteDuration) extends GraphStage[FlowShape[Int, Int]] {

因为您正在创建一个名为
Int
的类型参数,该参数隐藏类型
Int
定义,其中定义:

class WindowProcessingTimerFlow[Int](silencePeriod: FiniteDuration) extends GraphStage[FlowShape[Int, Int]] {
尝试从中删除泛型:

class WindowProcessingTimerFlow(silencePeriod: FiniteDuration) extends GraphStage[FlowShape[Int, Int]] {