"匹配......真 - > foo |假 - >吧"在Ocaml中有特殊含义吗?

P S*_*ved 5 syntax ocaml pattern-matching switch-statement

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

match something with
  true -> foo
  | false -> bar
Run Code Online (Sandbox Code Playgroud)

乍一看,它像通常的if声明一样工作.乍一看,它......就像通常的if说法一样!乍一看,我决定在SO问.这种结构是否具有特殊意义或if与特殊情况中重要的陈述有细微差别?

Dav*_*haw 11

是的,这是一个if语句.

通常match情况在OCaml代码中比较常见if,因此可以用于统一.

  • 我同意但是我会用另一种方式表达:我认为ML中的编程会让你看到模式在一段时间后无处不在,所以你先写"匹配x",然后开始思考. (2认同)
  • 它不仅等同于if语句,很可能所有if语句都被编译器以这种方式去掉了. (2认同)