Funktionen leben in Modulen (defmodule). Mit def definierst du öffentliche, mit defp private Funktionen. Mehrere Funktionsklauseln mit unterschiedlichen Mustern ersetzen oft if-Ketten. Anonyme Funktionen schreibst du fn x -> x * 2 end; die Kurzform ist &(&1 * 2).
Der Pipe-Operator |> reicht das Ergebnis als erstes Argument weiter und macht Datenverarbeitung gut lesbar.
defmodule Mathe do
def fakultaet(0), do: 1
def fakultaet(n) when n > 0, do: n * fakultaet(n - 1)
def gruss(name, ausruf \\ "Hallo"), do: "#{ausruf}, #{name}!"
end
IO.puts(Mathe.fakultaet(5)) # 120
IO.puts(Mathe.gruss("Mia"))
" elixir "
|> String.trim()
|> String.upcase()
|> IO.puts() # ELIXIRMerke
deföffentlich,defpprivat- Mehrere Klauseln mit Mustern und
when-Guards |>reicht Ergebnisse weiter
Aufgabe
Schreibe `Mathe.summe/1`, die die Summe einer Liste rekursiv berechnet.