2
的doc具有下面的例子(只什麼有關我的問題是所示):阿卡流:無參數GraphDSL.create()VS GraphDSL.create(匯)
val resultSink = Sink.head[Int]
val g = RunnableGraph.fromGraph(GraphDSL.create(resultSink) { implicit b => sink =>
import GraphDSL.Implicits._
// importing the partial graph will return its shape (inlets & outlets)
val pm3 = b.add(pickMaxOfThree)
Source.single(1) ~> pm3.in(0)
Source.single(2) ~> pm3.in(1)
Source.single(3) ~> pm3.in(2)
pm3.out ~> sink.in
ClosedShape
})
我很好奇,爲什麼水槽必須被傳遞作爲參數來GraphDSL.create
所以我修改的例子中略微
val resultSink = Sink.head[Int]
val g = RunnableGraph.fromGraph(GraphDSL.create() { implicit b =>
import GraphDSL.Implicits._
// importing the partial graph will return its shape (inlets & outlets)
val pm3 = b.add(pickMaxOfThree)
val s = b.add(resultSink).in
Source.single(1) ~> pm3.in(0)
Source.single(2) ~> pm3.in(1)
Source.single(3) ~> pm3.in(2)
pm3.out ~> s
ClosedShape
})
然而,這種改變從Future[Int]
到akka.NotUsed
的g.run()
返回類型。爲什麼?