Мне любопытно, когда при определении функций я должен использовать сопоставление шаблонов vs guard.
Например, при сопоставлении с образцом:
defmodule Exponent do
def power(value, 0), do: 1
def power(value, n), do: value*power(value, n-1)
end
vs guard:
defmodule Exponent do
def power(value, n) when n==0, do: 1
def power(value, n), do: value*power(value, n-1)
end
Я имею в виду, что оба продукта дают одинаковый результат, но одно решение предпочтительнее другого? И если да, то почему?
Я новичок в Elixir, поэтому ответ на этот вопрос мне не совсем понятен (пока). Спасибо заранее.