Das Modul Enum bietet Funktionen für Sammlungen: map, filter, reduce, sort, take, sum, group_by. Listen sind unveränderlich: Jede Funktion liefert eine neue. Comprehensions (for x <- liste, bedingung, do: ...) kombinieren Schleife und Filter. Mit Stream rechnest du faul, ideal für große oder unendliche Daten.
In Elixir schreibst du fast nie klassische Schleifen, sondern verarbeitest Daten in Ketten.
zahlen = [5, 2, 9, 4]
zahlen |> Enum.filter(&(rem(&1, 2) == 0)) |> IO.inspect() # [2, 4]
zahlen |> Enum.map(&(&1 * 2)) |> IO.inspect()
zahlen |> Enum.sort() |> IO.inspect()
IO.puts(Enum.sum(zahlen))
IO.puts(Enum.reduce(zahlen, 0, fn x, acc -> x + acc end))
for x <- 1..10, rem(x, 2) == 0, do: x * x
|> IO.inspect() # [4, 16, 36, 64, 100]
1..1_000_000 |> Stream.map(&(&1 * 2)) |> Enum.take(3) |> IO.inspect()Merke
Enumfür Sammlungen- Comprehensions:
for x <- liste, bedingung, do: ... Streamrechnet faul
Aufgabe
Bestimme die Summe aller Quadratzahlen von 1 bis 20.