内容简介:参考:iex(2)> Enum.map([1,2,3], fn x -> x * 2 end )[2, 4, 6]
参考: https://elixir-lang.org/getting-started/enumerables-and-streams.html
iex(2)> Enum.map([1,2,3], fn x -> x * 2 end )
[2, 4, 6]
iex(3)> Enum.map(%{ 1 => 3, 5 => 27}, fn {k,v} -> k * v end )
[3, 135]
iex(4)> [1,2,3]
> Enum.map( (1..9), fn x -> 2*x + 1 end )
[3, 5, 7, 9, 11, 13, 15, 17, 19]
odd? = &( rem(&1, 2) != 0) # 这里定义了取偶数的方法。 可以看出 &( ... ) 中的代码,默认是 返回 boolean
iex > Enum.filter( 5..9, odd?) # 这里可以看出, Enum.filter 接受两个参数。 第二个是一个fn
[5, 7, 9]
)> total_sum = 1..300 |> Enum.map(fn(x) -> x + 3 end) |> Enum.filter(&( rem(&1, 2) == 0))
[4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,
44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82,
84, 86, 88, 90, 92, 94, 96, 98, 100, 102, ...]
Stream. 每次pipe 返回的不是一个List(不是一个方法结果),而是使用Stream对传入的数据进行的处理。
iex(30)> 1..100_000
1..100000
iex(31)> 1..100_000 |> Stream.map(&(&1 * 3))
#Stream<[enum: 1..100000, funs: [#Function<49.117072283/1 in Stream.map/2>]]>
iex(32)> 1..100_000 |> Stream.map(&(&1 * 3)) |> Stream.filter(&(rem(&1, 2) == 0))
#Stream<[
enum: 1..100000,
funs: [#Function<49.117072283/1 in Stream.map/2>,
#Function<41.117072283/1 in Stream.filter/2>]
]>
iex(33)> 1..100_000 |> Stream.map(&(&1 * 3)) |> Stream.filter(&(rem(&1, 2) == 0)) |> Enum.sum
7500150000
Stream特别适合 大数据的计算,例如 无限长 , 无限大的结果。 (到 pipe operator的最后一刻才知道多大)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- RecyclerView使用指南(一)—— 基本使用
- 如何使用Meteorjs使用URL参数
- 使用 defer 还是不使用 defer?
- 使用 Typescript 加强 Vuex 使用体验
- [译] 何时使用 Rust?何时使用 Go?
- UDP协议的正确使用场合(谨慎使用)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++沉思录
Andrew Koenig、Barbara Moo / 黄晓春、孟岩(审校) / 人民邮电出版社 / 2002-11-01 / 50.00元
《C++ 沉思录》集中反映了C++的关键思想和编程技术,不仅告诉你如何编程,还告诉你为什么要这样编程。本书曾出现在众多的C++专家推荐书目中。 这将是C++程序员的必读之作。因为: 它包含了丰富的C++思想和技术,从详细的代码实例总结出程序设计的原则和方法。 不仅教你如何遵循规则,还教你如何思考C++编程。 既包括面向对象编程也包括泛型编程。 探究STL这一近年来C++最重要的新成果的内在思想。一起来看看 《C++沉思录》 这本书的介绍吧!