Elixir 積極與懶惰

2023-12-15 13:50 更新

?Enum?模塊中的所有函數(shù)都是積極的。許多函數(shù)接受了一個枚舉體并返回了一個列表:

iex> odd? = &(rem(&1, 2) != 0)
#Function<6.80484245/1 in :erl_eval.expr/5>
iex> Enum.filter(1..3, odd?)
[1, 3]

這意味著當(dāng)使用?Enum?進(jìn)行多次操作時,每個操作都在生成一個中間列表,直到獲得最終結(jié)果:

iex> 1..100_000 |> Enum.map(&(&1 * 3)) |> Enum.filter(odd?) |> Enum.sum
7500000000

上述例子用到了管道操作符。我們以一個范圍開始,讓后將范圍中的每個數(shù)乘以3.第一個操作將會創(chuàng)造并返回一個?100_000?個元素的列表。之后我們留下了列表中的所有奇數(shù),并生成了一個有?50_000?個元素的新列表,然后我們將其全部相加。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號