2009-09-26 73 views

回答

11

是的,这是一个if语句。

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

+2

我同意,但是我会换一种说法:我觉得编程ML让你看到图案,经过一段时间到处匹配,所以你先写“match x with”,然后开始思考。 – 2009-09-26 12:28:47

+2

它不仅等同于if语句,它很可能是所有的if语句都被编译器以这种方式去除。 – 2009-09-26 19:10:17

2

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

“模式匹配是一个switch语句,但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;; 
+0

感谢您为学习OCaml的人提供有用的示例和提醒。然而,我的问题不是关于通常使用'match',而是关于它的一个特定用法,当一个布尔值仅与“true”和“false”匹配时。在这种情况下,它确实可以作为“if”运算符。大卫的回答和随后的评论解释了这一点。 – 2009-09-28 13:01:52

相关问题