首页 > Erlang并发教程 > 3.18 Erlang并发编程-函数子句保护式
2013
11-05

3.18 Erlang并发编程-函数子句保护式

BACK TOP文章索引

  1. 子句保护式
  2. 共0条评论

子句保护式

保护式是子句被选中前必须要满足的条件。

保护式可以是一个简单的断言或是一组由逗号分隔的简单断言。一个简单断言可以是一个算数比较、项式比较,或是一个系统预定义的断言函数。保护式可以看作是模式匹配的一种扩展。用户自定义的函数不能用在保护式内。

对保护式求值时所有的断言都将被求值。若所有断言都为真,则保护式成立,否则就失败。保护式中各个断言的求值顺序是不确定的。

如果保护式成立,则会对子句的主体进行求值。如果保护式失败,则尝试下一个候选子句。

一旦子句的头部和保护式都匹配成功,系统将指定这条子句并对其主体求值。

我们可以写一个保护式版本的factorial

factorial(N) when N == 0 -> 1;
factorial(N) when N > 0  -> N * factorial(N - 1).

注意对于以上示例,我们可以调换子句的顺序,即:

factorial(N) when N > 0  -> N * factorial(N - 1);
factorial(N) when N == 0 -> 1.

在这个示例中子句首部模式与保护式的组合可以唯一确定一个正确的子句。


留下一个回复

你的email不会被公开。