如果我有一个类型说 type foobar = foo * bar 和foobar类型的变量 a . 是否可以通过方法获得foo的值?除了模式匹配还有其他方法吗?此外,在这种情况下,您将如何应用模式匹配?由于声明的类型未声明为 type foobar = | Foobar of foo * bar ?
1 回答
2
你可以匹配这样一对:
# type intfloat = int * float;;
type intfloat = int * float
# let x : intfloat = (3, 5.5);;
val x : intfloat = (3, 5.5)
# let (int_part, _) = x in int_part;;
- : int = 3
# let (_, float_part) = x in float_part;;
- : float = 5.5
1 回答
你可以匹配这样一对:
有一个函数(不是方法)
fst
返回一对的第一个元素 .但是,
fst
的定义必然使用模式匹配:在此定义中,构造
(a, b)
是匹配一对的模式 .模式匹配是OCaml的重要组成部分,而不仅仅是一个奇特的可选功能 .