特别处理Akka流的第一个元素

2024-07-04

有没有一种惯用的方法来处理 Akka 流Source第一个元素以特殊的方式?我现在拥有的是:

    var firstHandled = false
    source.map { elem =>
      if(!firstHandled) {
        //handle specially
        firstHandled = true
      } else {
        //handle normally
      }
    }

Thanks


虽然我通常会同意拉蒙的答案,但你也可以使用prefixAndTail http://doc.akka.io/docs/akka/2.4/scala/stream/stages-overview.html#prefixAndTail,前缀为 1,以及flatMapConcat http://doc.akka.io/docs/akka/2.4/scala/stream/stages-overview.html#flatMapConcat实现类似的目标:

val src = Source(List(1, 2, 3, 4, 5))
val fst = Flow[Int].map(i => s"First: $i")
val rst = Flow[Int].map(i => s"Rest:  $i")

val together = src.prefixAndTail(1).flatMapConcat { case (head, tail) =>
  // `head` is a Seq of the prefix elements, which in our case is
  // just the first one. We can convert it to a source of just
  // the first element, processed via our fst flow, and then
  // concatenate `tail`, which is the remainder...
  Source(head).via(fst).concat(tail.via(rst))
}

Await.result(together.runForeach(println), 10.seconds)
// First: 1
// Rest:  2
// Rest:  3
// Rest:  4
// Rest:  5

这当然不仅适用于第一个项目,而且适用于第一个项目N物品,但条件是这些物品将被严格收藏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

特别处理Akka流的第一个元素 的相关文章

随机推荐

  • 将数据从 Access 导入 SQL Server(进行少量表更改)

    我目前正在致力于将应用程序从 MS Access 迁移到 MS SQL Server 在此过程中 我对表布局进行了一些细微的更改 我将一些内容分成了两个表 但是 我仍然希望保留数据库中存在的所有数据 在更改数据库结构以满足我的新要求的同时导
  • MS Access 2013 对象(表、查询)显示创建或修改日期

    Is there any way I can make Access 2013 display created and modified date Access 2003 used to display those features and
  • 分组依据 - 多个条件 - MySQL

    如何根据条件组合 2 个组 我有一天中每个小时的每个 id 的记录 我想按第一个 id 和当天该 id 的所有记录对信息进行分组 然后按第二个 id 和当天该 id 的所有记录对信息进行分组 我的示例查询是这样的 SELECT r name
  • PHP imap_search 未检测到 gmail 收件箱中的所有邮件

    当我运行一个非常简单的imap search在我的 GMail 收件箱中 搜索返回的邮件数量少于应有的数量 这是任何拥有 GMail 帐户的人都可以运行的脚本 host imap gmail com 993 imap ssl user fo
  • 如何加载测试服务器发送事件?

    我有一个发送服务器发送事件的小应用程序 我想对我的应用程序进行负载测试 这样我就可以对从推送消息到接收消息的延迟进行基准测试 这样我就可以知道性能何时 何处崩溃 有什么工具可以做到这一点 Since Server Sent Events这只
  • VB Clear Scripting.Dictionary 对象

    我正在写一个Excel宏 并且我在清除时遇到问题Scripting Dictionary 对象 Dim test As Integer test CompListDict Count CompListDict RemoveAll Set C
  • UIBarButtonItem 单击后没有反应

    来自rootViewController我导航到UIViewController if self contr nil ExampleViewController controller ExampleViewController alloc
  • 从 FLAC 创建 HLS 音频流

    我有一个包含一首歌曲的 FLAC 文件 我想创建一个 HLS 流 其中质量最好的流是 FLAC 与输入匹配 因此只是传递但分块 然后是 AAC LC 320 160 和 96Kbps 我该怎么做 以下命令是一个很好的起点 ffmpeg i
  • TortoiseGit / Winforms:合并时解析 Resource.resx

    我对 TortoiseGit 还很陌生 想知道如果 resx 文件发生冲突 如何在合并过程中解决它 例如 我可以从菜单中选择 使用他们的 尝试进行拉动和推动 但这是正确的方法吗 我可以以某种方式使用他们的并通过我的项目更改重建它吗 差异 以
  • 如何向 v-dialog、vuetify 添加具有新样式 css 的类?

    再会 我正在使用 vuetify 在组件中使用以下 v dialog
  • 创建一个 TypeScript 记录,其中第二个类型参数依赖于第一个类型参数?

    我试图在 TS 中定义一个映射字符串的对象的类型 我们称之为key 到一个函数 其中参数之一始终是key 我目前拥有的是一个记录stringK 和值的函数 如下所示 const IsCountry Record
  • 我应该担心 JavaScript 支持吗?

    我开发了一个支持ajax 的网站 然而 该网站目前无法在没有 JavaScript 的情况下运行 该网站在我测试过的任何浏览器以及 iPhone 诺基亚手机上都运行良好 但是 我还应该担心 javascript 支持吗 我知道有一些技术可以
  • html5 datalist 仅选择预定义选项

    我正在使用 HTML5datalist允许通过自动完成和过滤功能从大列表中进行选择 但我只想允许从预定义的选项中进行选择 查看小提琴演示http jsfiddle net tharas rrkdu8pk http jsfiddle net
  • 从源代码控制打开现有项目

    我一直在将我的源代码推送到 Mercurial 存储库 今天我需要删除本地副本并重新克隆 我通过简单地将本地副本移动到其他地方 以防万一 并输入 hg clone url 来完成此操作 这部分工作得很好 但是 当我尝试将新克隆的本地副本拉入
  • 将 Three.js 转换为 Adob​​e 3D-pdf?

    有没有办法将 Three hs 作为 U3D 转换为 3D pdf 我想基于树结构 孩子的孩子 将我的程序集导出为 Three js 到 3D pdf 是否可以 与相反的东西将 Adob e 3D pdf 转换为 WebGL https s
  • VSTO 功能区库,看起来像 Word 2010 中的样式选择器

    我正在用 C 编写功能区 COM 加载项 并尝试在新选项卡上创建可用模板文件库 是否可以将图库设置为像 Word ie 中主页选项卡上的样式选择器图库一样打开 显示图库中的所有文件名 MS 不允许其他人使用带内画廊在 Outlook 200
  • 为什么“linkClicked(const QUrl&)”信号没有捕获鼠标左键的 QUrl?

    首先 我想澄清的是 这种奇怪的行为并不适用于每个网站 这是我的代码网页浏览器 https github com EricsonWillians Open Browser def compose tab self index self tab
  • 使用指令刷新窗口时刷新元素高度和大小

    目前 以下指令在页面加载时获取元素的宽度和高度 如何让它在窗口调整大小时刷新它 angular module adsomaApp directive elementSize function timeout return restrict
  • 从子列表中切片元素 - Python

    我想从中返回数字 5 list 1 1 2 3 4 5 6 我以为这会起作用 但事实并非如此 print list 1 1 1 它返回一个空列表 它是索引 1 第二个列表 和位置 1 列表中的第二个数字 这不应该起作用吗 您需要两个单独的操
  • 特别处理Akka流的第一个元素

    有没有一种惯用的方法来处理 Akka 流Source第一个元素以特殊的方式 我现在拥有的是 var firstHandled false source map elem gt if firstHandled handle specially