假设我用这种方式在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;;
答案 0 :(得分:5)
匹配是否会调用构造函数,或者只是"识别"模式没有调用构造函数?
后者。与Bar z
匹配不会创建新的Bar
值。它只是检查x
是否为Bar
值。