Elixir 枚舉接口

2023-12-15 13:50 更新

Elixir提供了可枚舉性的概念,以及?Enum?模塊來操作它們。我們已經(jīng)學(xué)習(xí)了兩個可枚舉結(jié)構(gòu):列表和映射。

iex> Enum.map([1, 2, 3], fn x -> x * 2 end)
[2, 4, 6]
iex> Enum.map(%{1 => 2, 3 => 4}, fn {k, v} -> k * v end)
[2, 12]

?Enum?模塊提供了巨量的函數(shù)用于對可枚舉體中的元素進(jìn)行變換,排序,組合,篩選和檢索。這是Elixir開發(fā)者最常用的模塊之一。

Elixir也提供范圍:

iex> Enum.map(1..3, fn x -> x * 2 end)
[2, 4, 6]
iex> Enum.reduce(1..3, 0, &+/2)
6

Enum模塊中的函數(shù)只適用于對數(shù)據(jù)結(jié)構(gòu)中的值進(jìn)行枚舉。對于特定操作,例如插入和更新特定的元素,你可能需要使用針對于某種數(shù)據(jù)類型的模塊。例如,如果你想要往列表的指定位置插入指定元素,你應(yīng)當(dāng)使用List模塊中的List.insert_at/3函數(shù),因?yàn)閷⒅挡迦氲揭粋€范圍中是沒有意義的。

我們說Enum模塊中的函數(shù)是多態(tài)的,因?yàn)樗鼈冞m用于多種數(shù)據(jù)類型。特別地,Enum模塊中的函數(shù)適用于任何實(shí)現(xiàn)了Enumerable協(xié)議的數(shù)據(jù)類型。我們將在之后的章節(jié)討論協(xié)議;現(xiàn)在我們將講到一種特殊的枚舉體,流。


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號