功能是一组指令,它们被组合在一起。这些分组的指令一起执行某些任务。在erlang中,所有函数在调用时都会返回一个值。
下面是一个将两个数字相加的函数的示例
add(X, Y)-> X + Y.
此函数对X和Y值执行加法运算并返回结果。功能可以如下使用
add(2,5).
函数声明可以包含多个由分号分隔的子句。这些子句中的每个参数都是通过模式匹配来评估的。如果参数是以下形式的元组,则以下函数将返回“元组”:{test,X},其中X可以是任何值。如果参数是格式为[“ test”,X]的长度为2的列表,它将返回'list',并且在任何其他情况下,它将返回'{error,“ Reason”}'':
function({test, X}) -> tuple; function(["test", X]) -> list; function(_) -> {error, "Reason"}.
如果参数不是元组,则将计算第二个子句。如果参数不是列表,则将评估第三子句。
函数声明可以包含所谓的“ Guards”或“ Guard Sequences”。这些Guard是限制函数求值的表达式。仅当所有Guard表达式均产生真值时,才执行带有Guards的函数。多个卫兵可以用分号分隔。
function_name(Argument) when Guard1; Guard2; ... GuardN -> (...).
仅当保护序列为true时,才对函数'function_name'求值。仅当参数X在适当范围内(0..15)时,follwing函数才会返回true :
in_range(X) when X>=0; X<16 -> true; in_range(_) -> false.