首页 > Erlang并发教程 > 3.7 Erlang并发编程-Pattern=Expression
2013
11-05

3.7 Erlang并发编程-Pattern=Expression

Pattern = Expression

表达式Pattern = Expression将致使Expression被求值,并将其结果与Pattern进行匹配。匹配要么成功要么失败。若匹配成功则Pattern中的所有(未绑定)变量都将被绑定。

以下我们将假设模式匹配总是成功。对失败的处理将在第??章详细讨论。

示例:

{A, B} = {12, apple}

匹配成功后建立绑定关系A12[3]Bapple

{C, [Head|Tail]} = {{222, man}, [a,b,c]}

匹配成功后建立绑定关系C{222, man}HeadaTail[b, c]

[{person, Name, Age, _}|T] =
        [{person, fred, 22, male},
         {person, susan, 19, female}, ...]

匹配成功后建立绑定关系T[{person, susan, 19, female}, ...]}NamefredAge22。在最后一个例子中我们利用了写作“_”的匿名变量——在语法上需要一个变量出现,但我们又不关心该变量的值的时候便可以使用匿名变量。

当一个变量在一个模式中多次出现时,只有被匹配的对应元素的值都相同时匹配才会成功。因此,举例来说,{A, foo, A} = {123, foo, 123}将成功匹配,并将A绑定到123,然而{A, foo, A} = {123, foo, abc}就会失败,因为我们不能将A同时绑定到123abc

=”是一个右结合的中缀运算符。因此A = B = C = D将被解析为A = (B = (C = D))。这种用法可能只有在{A, B} = X = ...这样的构造中才有用,这时我们可以同时获悉表达式的值及其组成部分。表达式Lhs = Rhs的值被定义为Rhs


留下一个回复

你的email不会被公开。