Jeśli funkcja ma kilka klauzul, Elixir spróbuje każdej klauzuli, dopóki nie znajdzie odpowiadającej. Pozwala to na "filtrowanie" na podstawie dostarczonych argumentów - szczególnie przydatne, jeśli funkcje nie mają wspólnej logiki.
def load([]), do: IO.puts("empty")
def load(token) when token == nil, do: IO.puts("nil") # Matching `nil' is OK too.
def load(token), do: process(token)
Drugi punkt przedstawia zastosowanie osłon, które pozwalają na bardziej ogólne wyniki nie są a number of predicates that are valid as guards z których każdy może być przyłączony do (prawie) każdej ekspresji, które są stosowane do przełączania się na funkcji-argumentów rekurencyjnie lub Inaczej.
Ta konwencja obowiązuje we wszystkich istniejących językach BEAM i warto o tym pamiętać czytając dokumentację OTP.
Dobrze, więc to też jest w porządku, '' def load (zero), do: IO.puts ("zero") '' Dziękuję. –