En

Enum in Elixir

98 Übungen

Über Enum

Enum ist ein sehr nützliches Modul, das eine Reihe von Algorithmen für die Arbeit mit Enumerables bereitstellt. Es bietet:

Und vieles mehr! Eine vollständige Liste findest du in der Dokumentation des Enum-Moduls.

Enumerable

Im Allgemeinen ist ein Enumerable eine beliebige Datenstruktur, über die iteriert werden kann, also eine Sammlung. In Elixir ist ein Enumerable jeder Datentyp, der das Protokoll Enumerable implementiert. Das sind:

Mach dir keine Sorgen, wenn du noch nicht alle kennst.

Jeder kann das Enumerable-Protokoll für seine eigene Datenstruktur implementieren.

Reduce

Mit Enum.reduce/2 kannst du das gesamte Enumerable zu einem einzelnen Wert reduzieren. Dazu wird eine spezielle Variable namens Akkumulator verwendet. Der Akkumulator trägt den Zwischenzustand der Reduktion zwischen den Iterationen. Damit ist sie eine der mächtigsten Funktionen für Enumerables. Viele andere spezialisierte Funktionen lassen sich durch das allgemeinere reduce ersetzen. Zum Beispiel ...

Den größten Wert finden:

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

Und sogar Mapping (allerdings muss das Ergebnis danach umgekehrt werden):

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]

Maps abbilden

  • Mit Map.new/2:

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

    %{a: 1, b: 2}
    |> Enum.into(%{}, fn {key, value} -> {key, value * 10} end)
    
  • Mit Enum.map/2:

    %{a: 1, b: 2}
    |> Enum.map(fn {key, value} -> {key, value * 10} end)
    |> Enum.into(%{})
    
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Enum

Das Üben ist gesperrt

Schalte 10 weitere Übungen frei, um Enum zu üben