- 教程
- 概述
- 环境
- Basic 语法
- 数据类型
- 变量
- 运算符
- 模式匹配( Pattern Matching)
- 决策( Decision Making)
- Strings( Strings)
- Char Lists( Char Lists)
- 列表和元组( Lists and Tuples)
- 关键字列表( Keyword Lists)
- Maps
- 模块( Modules)
- 别名( Aliases)
- 功能( Functions)
- 递归
- 循环
- Enumerables( Enumerables)
- Streams( Streams)
- Structs( Structs)
- 协议 Protocols
- File I/O
- 进程( Processes)
- Sigils( Sigils)
- 理解( Comprehensions)
- Typespecs( Typespecs)
- 行为( Behaviours)
- 错误处理( Errors Handling)
- Macros( Macros)
- (库)Libraries
- 有用的资源
- 讨论
- Show 例子
- Show 例子
- Show 例子
- Show 例子
- Show 例子
- if statement
- if..else statement
- unless statement
- unless..else statement
- cond
- case
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Streams( Streams)
许多函数都期望枚举并返回一个list 。 这意味着,在使用Enum执行多个操作时,每个操作都将生成一个中间列表,直到我们到达结果。
Streams支持延迟操作,而不是enums的急切操作。 简而言之, streams are lazy, composable enumerables 。 这意味着除非绝对需要,否则Streams不会执行操作。 让我们考虑一个例子来理解这一点 -
odd? = &(rem(&1, 2) != 0)
res = 1..100_000 |> Stream.map(&(&1 * 3)) |> Stream.filter(odd?) |> Enum.sum
IO.puts(res)
运行上述程序时,会产生以下结果 -
7500000000
在上面给出的示例中, 1..100_000 |》 Stream.map(&(&1 * 3))返回数据类型,即实际流,表示1..100_000范围内的地图计算。 它还没有评估这种表示。 流不构建中间列表,而是构建一系列计算,只有在我们将底层流传递给Enum模块时才会调用这些计算。 在处理大型集合(可能是无限集合)时,流非常有用。
流和枚举有许多共同的功能。 Streams主要提供Enum模块提供的相同功能,它在对输入枚举执行计算后生成Lists作为其返回值。 其中一些列在下表中 -
Sr.No. | 功能及其描述 |
---|---|
1 | chunk(enum, n, step, leftover \\ nil) 流可枚举的块,每个包含n个项目,其中每个新块将步骤元素启动到可枚举中。 |
2 | concat(enumerables) 创建一个枚举可枚举中每个可枚举的流。 |
3 | each(enum, fun) 为每个项执行给定的函数。 |
4 | filter(enum, fun) 创建一个根据枚举的给定函数过滤元素的流。 |
5 | map(enum, fun) 创建将在枚举上应用给定函数的流。 |
6 | drop(enum, n) 懒惰地从可枚举中删除下n个项目。 |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论