我需要使用Enum后,我已经使用流?

  • 本文关键字:Enum elixir
  • 更新时间 :
  • 英文 :


我有很多数据,我使用Stream.map/2来获得结果。使用这个函数后,我得到了这个结果

#Stream<[
enum: #Function<51.58486609/2 in Stream.resource/3>,
funs: [#Function<47.58486609/1 in Stream.map/2>]
]>

现在,如果我映射结果并返回值,那么它将返回每个值两次。

如果我使用Enum.map而不是Stream.map我得到的结果。既然我不能在这里使用Enum函数,我该怎么办?

结果将是map

的列表

简单的答案是肯定的正如这里所说:https://elixir-lang.org/getting-started/enumerables-and-streams.html流

流不生成中间链表,而是构建一系列的仅在传递底层流时调用的计算到Enum模块。流在处理大型、可能是无限的,集合

如果您熟悉任何响应式编程系统,如RxJS, RxJava或Apple的Combine框架,那么使用Elixir的Stream函数就像在Publisher上使用操作符一样。您正在声明式地定义一个处理管道,但是该管道在订阅者要求它开始发送值之前不会做任何事情。

在响应式编程中,Subscriber请求Publisher开始发送值。具体细节将具体到每个框架,但通常有一个sink函数,允许您指定闭包来接收值,或Subscriber的其他机制来…嗯…订阅Publisher.

在Elixir中,根据我的经验,您在管道的尾部使用Enum中的一个(或多个)函数来扮演"订阅者"的角色。在这个场景中。从流中提取数据。

如果你不熟悉响应式编程,前面的解释听起来像是胡言乱语。请不要太担心。(虽然Rx是有趣的东西,在我看来值得一玩)

相关内容

  • 没有找到相关文章

最新更新