首页 > 解决方案 > 使用 Stream 后是否需要使用 Enum?

问题描述

我有很多数据,我正在使用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在这里使用函数,我该怎么办?

结果将是地图列表

标签: elixir

解决方案


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

流不是生成中间列表,而是构建一系列计算,仅当我们将底层流传递给 Enum 模块时才会调用这些计算。在处理可能是无限的大型集合时,流非常有用。


推荐阅读