Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Akka流图DSL表示法_Akka_Akka Stream - Fatal编程技术网

Akka流图DSL表示法

Akka流图DSL表示法,akka,akka-stream,Akka,Akka Stream,我使用graph dsl根据我看到的一些示例代码创建了一些流处理作业。一切都运行得很好,我只是在理解符号方面有困难:(更新为2.4) def元素:源[Foos]=。。。 def logEveryNSink=//记录日志的接收器 def清洁剂:流量[Foos,bar,Unit]=。。。 def boolChecker(bar:bar)(隐式ex:ExecutionContext):Future[Boolean]=。。。 val mySink=Sink.foreach[Boolean](printl

我使用graph dsl根据我看到的一些示例代码创建了一些流处理作业。一切都运行得很好,我只是在理解符号方面有困难:(更新为2.4)

def元素:源[Foos]=。。。
def logEveryNSink=//记录日志的接收器
def清洁剂:流量[Foos,bar,Unit]=。。。
def boolChecker(bar:bar)(隐式ex:ExecutionContext):Future[Boolean]=。。。
val mySink=Sink.foreach[Boolean](println(u1;))
val=Flow[bar].mapsync(2)(x=>boolChecker(x).toMat(mySink)(Keep.right)
val materialized=RunnableGraph.fromGraph(
GraphDSL.create(最后){implicit builder=>
baz=>{
导入GraphDSL.Implicits_
val broadcast1=builder.add(广播[Foos](2))
val broadcast2=builder.add(广播[bar](2))
元素~>broadcast1~>logEveryNSink(1)
广播1~>cleaner~>broadcast2~>baz
~>broadcast2~>logEveryNSink(1)
封闭形状
}
}
).run()

我理解包含的隐式生成器,但我不确定
baz
{implicit builder=>baz=>{…
中代表了什么。它只是整个形状的一个隐式名称吗?

GraphDSL.create方法负载过大,无法接受大量输入形状的变体(包括0)。如果未传入任何初始形状,则
构建块
函数arg(实际定义如何构建图形的主体)的签名如下所示:

(Builder[NotUsed]) => S
所以这只是一个
Function1[Builder[NotUsed],S]
,也就是说,一个取
Builder[NotUsed]实例的函数
并返回一个
形状
实例,该实例是最终的图形。此处的
未使用
单元
同义,因为您表示,通过不传递任何输入共享,您不关心正在生成的输出图形的物化值

如果您决定传入输入形状,则该
构建块
函数的签名会发生一些变化,以适应输入形状。在您的情况下,您传入的是1个输入形状,因此
构建块
的签名会变为:

(Builder[Mat]) => Graph.Shape => S
现在,这本质上是一个
Function1[Builder[Mat],Function1[Graph.Shape,S]
,或者一个采用
Builder[Mat]
的函数(其中
Mat
是输入形状的物化值类型),并返回一个采用
Graph.Shape
并返回
S
实例的函数(这是一个
形状

长话短说,如果传入形状,则还需要将它们声明为图形构建块函数上的绑定参数,但作为第二个输入函数(因此附加的
=>