我在整个Ocaml项目的不同地方遇到了以下构造我正在阅读代码。
match something with
true -> foo
| false -> bar
乍一看,它的工作方式与通常的if
语句相同。乍一看,它......就像通常的if
声明一样!乍一看,我决定在SO问。这个结构是否具有特殊意义或与特殊情况下重要的if
语句有细微差别?
答案 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;;