加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Source的类型参数是什么意思?

发布时间:2020-12-16 09:55:56 所属栏目:安全 来源:网络整理
导读:我正在尝试了解Akka流的Source类型,指定为 here. 不幸的是,我发现的文档和示例并没有解释每个类型参数的实际含义.我猜测Out是物化时源发出的类型.那是对的吗?什么是其他类型参数Mat? 解决方法 退房 你是对的,这是Source发出的元素的类型. 垫 它是Source的
我正在尝试了解Akka流的Source类型,指定为 here.

不幸的是,我发现的文档和示例并没有解释每个类型参数的实际含义.我猜测Out是物化时源发出的类型.那是对的吗?什么是其他类型参数Mat?

解决方法

退房

你是对的,这是Source发出的元素的类型.

它是Source的物化形式.请注意,每个阶段(Flows,Sinks等)也将实现一个值.
这基本上是舞台本身运行后的副产品.

您可以将其描绘为在舞台运行时与舞台交互的手段.查看Akka提供的现成资源的例子是获得它的要点的好方法.

> Source.single将实现NotUsed.你没有意义与源相互作用,因为它只会产生一个元素,然后完成.
> Source.queue将实现SourceQueue.这是一个更有趣的案例,因为您可以通过向源提供消息来与源进行交互.您提供的消息将由源发出.
> Source.maybe将实现承诺.您可以使用Promise来控制源并使其发出一个元素,或者None.

当您连接不同的阶段时,请注意每个阶段都可能具有有用的物化价值.您可以使用viaMat / toMat和Keep DSL来选择要保留的内容.
在组合图上调用run()时,将返回一个或多个实现值.

查看下面示例中的类型是获取API要点的最佳方法:

val source: Source[Int,MatSrc]
  val sink: Sink[Int,MatSnk]

  val matSrc: MatSrc = source.toMat(sink)(Keep.left).run()
  val matSnk: MatSnk = source.toMat(sink)(Keep.right).run()
  val (m1: MatSrc,m2: MatSnk) = source.toMat(sink)(Keep.both).run()
  val n: NotUsed = source.toMat(sink)(Keep.none).run()

请注意,在许多示例中您可以找到的更简洁的DSL实际上是上述的快捷方式,其中仅保留最后一级(例如,接收器)的具体化值.

val mat3: Mat3 = source.viaMat(flow)(Keep.right).toMat(sink)(Keep.right).run()

是相同的

val mat3: Mat3 = source.via(flow).runWith(sink)

请参阅下面的文档以进一步阅读.

http://doc.akka.io/docs/akka/2.4/java/stream/stream-quickstart.html#Materialized_values

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读