Erlang的函数看起来就象下面的样子:
函数名(参数形式1) -> 表达式;
......
函数名(参数形式n) -> 表达式.
上面的函数名是相同的,即这里我们说到的是一个函数的定义,每一条叫做一个子句,子句以分号结束,整个函数以点号结束。当然,整个句子可以只有一个子句。
调用的时候,实参(如果还叫做实参的话)与参数形式进行匹配,如果匹配得上,则返回"->"后面的表达式的值。如果一个都匹配不上,会出现,嗯运行时错误,是的,一个exception。
函数子句参数形式顺序是重要的,它只能至上而下的进行匹配,所以在写函数的时候,要注意顺序。
下面是一个简单的例子:
- geometry.erl
- -module(geometry).
- -export([area/1]).
- area({rectangle, Width, Height}) -> Width * Height;
- area({circle, R}) -> 3.13 * R * R.
- c(geometry).
- geometry:area({rectangle, 10, 3}).
- geometry:area({circle, 5}).