模式匹配

Elixir 根据其参数的值匹配对其主体的函数调用。

defmodule Math do
    def factorial(0): do: 1
    def factorial(n): do: n * factorial(n - 1)
end

这里,正数的阶乘匹配第二个子句,而 factorial(0) 匹配第一个子句。 (为简单起见,忽略负数)。Elixir 尝试从上到下匹配功能。如果第二个函数写在第一个函数之上,那么我们会得到一个意想不到的结果,因为它会进行无休止的递归。因为 factorial(0)factorial(n) 匹配