En

Enum ebben a kurzusban: Elixir

98 feladat

A(z) Enum fogalomról

Az Enum egy nagyon hasznos modul, amely algoritmusok sorát kínálja az enumerable-ökkel való munkához. Többek között:

És még rengeteg mást! A teljes listát az Enum modul dokumentációjában találod.

Enumerable

Általánosságban egy enumerable minden olyan adat, amelyen végig lehet iterálni, azaz egy gyűjtemény. Elixirben enumerable minden olyan adattípus, amely megvalósítja az Enumerable protokollt. Ezek a következők:

Ne aggódj, ha még nem ismered mindet.

Bárki megvalósíthatja az Enumerable protokollt a saját egyedi adatszerkezetéhez.

Redukálás

Az Enum.reduce/2 segítségével a teljes enumerable-t egyetlen értékké redukálhatod. Ehhez egy speciális, akkumulátornak nevezett változóra van szükség. Az akkumulátor az iterációk között hordozza a redukálás köztes állapotát. Emiatt ez az egyik legerősebb függvény, amikor enumerable-ökkel dolgozol. Sok más speciális függvény helyettesíthető az általánosabb reduce-dzsel. Például...

A maximális érték megkeresése:

Enum.max([4, 20, 31, 9, 2])
# => 31

Enum.reduce([4, 20, 31, 9, 2], nil, fn x, acc ->
  cond do
    acc == nil -> x
    x > acc -> x
    x <= acc -> acc
  end
end)

# => 31

Sőt, még a leképezés is (de ehhez utána meg kell fordítani az eredményt):

Enum.map([1, 2, 3, 4, 5], fn x -> x + 10 end)
# => [11, 12, 13, 14, 15]

Enum.reduce([1, 2, 3, 4, 5], [], fn x, acc -> [x + 10 | acc] end)
# => [15, 14, 13, 12, 11]

Map-ek leképezése

  • A Map.new/2 függvénnyel:

    %{a: 1, b: 2}
    |> Map.new(fn {key, value} -> {key, value * 10} end)
    
  • Az Enum.into/3 függvénnyel:

    %{a: 1, b: 2}
    |> Enum.into(%{}, fn {key, value} -> {key, value * 10} end)
    
  • Az Enum.map/2 függvénnyel:

    %{a: 1, b: 2}
    |> Enum.map(fn {key, value} -> {key, value * 10} end)
    |> Enum.into(%{})
    
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Enum fogalmat

A gyakorlás zárolva

Oldj fel még 10 feladatot, hogy gyakorolhasd a(z) Enum fogalmat