Akka:使用物化值转换接收器的输入
Akka: Transforming the Input of a Sink with a Materialized Value
我有一个接收器:Sink[String, Mat]
并想将其转换为接收器:Sink[Int, Mat]
通过映射每个元素:num: Int => ("num" + num): String
并保持原始物化类型和值。
如果 Mat
是 Unit
,那么很简单:
def transformSink(sink: Sink[String, Unit]): Sink[Int, Unit] =
Flow[Int].map("num" + _).to(sink)
但是为任何 Mat
改造水槽呢?
def transformSink[Mat](sink: Sink[String, Mat]): Sink[Int, Mat] = ???
我想 toMat
就是您要找的。看看这是否适合你:
def transformSink[Mat](sink: Sink[String, Mat]): Sink[Int, Mat] =
Flow[Int].map("num" + _).toMat(sink)(Keep.right)
}
我有一个接收器:Sink[String, Mat]
并想将其转换为接收器:Sink[Int, Mat]
通过映射每个元素:num: Int => ("num" + num): String
并保持原始物化类型和值。
如果 Mat
是 Unit
,那么很简单:
def transformSink(sink: Sink[String, Unit]): Sink[Int, Unit] =
Flow[Int].map("num" + _).to(sink)
但是为任何 Mat
改造水槽呢?
def transformSink[Mat](sink: Sink[String, Mat]): Sink[Int, Mat] = ???
我想 toMat
就是您要找的。看看这是否适合你:
def transformSink[Mat](sink: Sink[String, Mat]): Sink[Int, Mat] =
Flow[Int].map("num" + _).toMat(sink)(Keep.right)
}