Erlang - 模式匹配

模式看起来与术语相同——它们可以是简单的文字,如原子和数字,也可以是复合的,如元组和列表,或两者的混合。 它们还可以包含变量,这些变量是以大写字母或下划线开头的字母数字字符串。 当您不关心要匹配的值并且不会使用它时,使用特殊的"匿名变量"_(下划线)。

如果模式与所匹配的术语具有相同的"形状",并且遇到的原子相同,则该模式匹配。 例如以下匹配成功 −

  • B = 1.
  • 2 = 2.
  • {ok, C} = {ok, 40}.
  • [H|T] = [1, 2, 3,4].

请注意,在第四个示例中,管道 (|) 表示列表的头部和尾部,如术语中所述。 另请注意,左侧应与右侧匹配,这是模式的正常情况。

以下模式匹配示例将失败。

  • 1 = 2.
  • {ok, A} = {failure, "Don't know the question"}.
  • [H|T] = [].

对于模式匹配运算符,失败会生成错误,并且进程会退出。 错误中介绍了如何捕获和处理这种情况。 模式用于选择将执行函数的哪个子句。