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] = []。

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

广告