Elixir 積極與懶惰

2023-12-15 13:50 更新

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

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)行多次操作時(shí),每個(gè)操作都在生成一個(gè)中間列表,直到獲得最終結(jié)果:

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

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)