“匹配......真 - > foo | false - > bar”在Ocaml中有特殊含义吗?

时间:2009-09-26 12:19:18

标签: syntax switch-statement pattern-matching ocaml

我在整个Ocaml项目的不同地方遇到了以下构造我正在阅读代码。

match something with
  true -> foo
  | false -> bar

乍一看,它的工作方式与通常的if语句相同。乍一看,它......就像通常的if声明一样!乍一看,我决定在SO问。这个结构是否具有特殊意义或与特殊情况下重要的if语句有细微差别?

2 个答案:

答案 0 :(得分:11)

是的,这是一个if语句。

通常match个案例在OCaml代码中比if更常见,因此它可用于统一。

答案 1 :(得分:2)

我不同意之前的回答,它是if语句的工作,但它比那更灵活。

“模式匹配是一个开关语句,但强大10倍”有人说

看一下本教程,解释使用模式匹配的方法Link here

此外,使用OCAML时,模式匹配是允许您将组合数据分解为简单数据的方法,例如列表,元组等等

  > Let imply v = 
    match v with 
     | True, x -> x 
     | False, _ -> true;; 

  > Let head = function 
   | [] -> 42 
   | H:: _ -> am;

  > Let rec sum = function 
   | [] -> 0 
   | H:: l -> h + sum l;;