5

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

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

乍一看,它就像通常的if声明一样工作。乍一看,它.. 像往常一样工作if!乍一看,我决定问 SO。if这个结构与特殊情况下重要的陈述是否有特殊含义或细微差别?

4

2 回答 2

11

是的,这是一个 if 语句。

通常match情况下 OCaml 代码中的情况比 更常见if,因此它可以用于统一性。

于 2009-09-26T12:23:41.560 回答
2

我不同意前面的答案,它可以完成 if 语句的工作,但它比这更灵活。

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

看看这个教程,解释使用模式匹配的方法链接在这里

此外,当使用 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;; 
于 2009-09-28T09:51:19.633 回答