ocaml中的匹配是否会调用构造函数?

时间:2016-04-24 16:16:08

标签: ocaml

假设我用这种方式在OCaml中定义一个类型:

type 'a foo = My_none | Bar of 'a;;

制作时

let a = Bar 4;;

Bar构造函数被“调用”。

在下面的函数中,匹配是否调用构造函数,或者只是“识别”模式而不调用构造函数?

let get_bar x = match x with
     | My_none -> failwith "None"
     | Bar z -> z;;

1 个答案:

答案 0 :(得分:5)

  

匹配是否会调用构造函数,或者只是"识别"模式没有调用构造函数?

后者。与Bar z匹配不会创建新的Bar值。它只是检查x是否为Bar值。