用完Stream还需要用Enum吗?
Do I need to use Enum after I have used Stream?
我有很多数据,我正在使用 Stream.map/2
来获取结果。所以在使用这个函数后我得到了这个结果
#Stream<[
enum: #Function<51.58486609/2 in Stream.resource/3>,
funs: [#Function<47.58486609/1 in Stream.map/2>]
]>
现在,如果我映射结果和 return 值,那么它将 return 每个值两次。
如果我使用 Enum.map
而不是 Stream.map
,我会得到结果。既然我不能在这里使用 Enum
功能,我该怎么办?
结果将是一个地图列表
简单的答案是肯定的
正如它在这里所说:
https://elixir-lang.org/getting-started/enumerables-and-streams.html#streams
Instead of generating intermediate lists, streams build a series of
computations that are invoked only when we pass the underlying stream
to the Enum module. Streams are useful when working with large,
possibly infinite, collections.
如果您熟悉任何反应式编程系统,如 RxJS、RxJava 或 Apple 的 Combine 框架,使用 Elixir 的 Stream
函数就像在 Publisher 上使用运算符一样。您以声明方式定义了一个处理管道,但在订阅者要求它开始发出值之前,该管道不会执行任何操作。
在响应式编程中,Subscriber
要求 Publisher
开始发射值。细节将特定于每个框架,但通常有一个 sink
函数可以让您指定一个闭包来接收值,或者 Subscriber
的一些其他机制......好吧......订阅Publisher
.
在 Elixir 中,根据我的经验,您在管道的尾端使用 Enum
中的一个(或多个)函数来扮演这种情况下的“订阅者”角色。通过流提取数据。
如果您不熟悉响应式编程并且前面的解释听起来像胡言乱语。请不要担心太多。 (虽然 Rx 是有趣的东西,在我看来值得一试)
我有很多数据,我正在使用 Stream.map/2
来获取结果。所以在使用这个函数后我得到了这个结果
#Stream<[
enum: #Function<51.58486609/2 in Stream.resource/3>,
funs: [#Function<47.58486609/1 in Stream.map/2>]
]>
现在,如果我映射结果和 return 值,那么它将 return 每个值两次。
如果我使用 Enum.map
而不是 Stream.map
,我会得到结果。既然我不能在这里使用 Enum
功能,我该怎么办?
结果将是一个地图列表
简单的答案是肯定的 正如它在这里所说: https://elixir-lang.org/getting-started/enumerables-and-streams.html#streams
Instead of generating intermediate lists, streams build a series of computations that are invoked only when we pass the underlying stream to the Enum module. Streams are useful when working with large, possibly infinite, collections.
如果您熟悉任何反应式编程系统,如 RxJS、RxJava 或 Apple 的 Combine 框架,使用 Elixir 的 Stream
函数就像在 Publisher 上使用运算符一样。您以声明方式定义了一个处理管道,但在订阅者要求它开始发出值之前,该管道不会执行任何操作。
在响应式编程中,Subscriber
要求 Publisher
开始发射值。细节将特定于每个框架,但通常有一个 sink
函数可以让您指定一个闭包来接收值,或者 Subscriber
的一些其他机制......好吧......订阅Publisher
.
在 Elixir 中,根据我的经验,您在管道的尾端使用 Enum
中的一个(或多个)函数来扮演这种情况下的“订阅者”角色。通过流提取数据。
如果您不熟悉响应式编程并且前面的解释听起来像胡言乱语。请不要担心太多。 (虽然 Rx 是有趣的东西,在我看来值得一试)