Elixir模式匹配

例子

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)