从类型ocaml中获取元素

时间:2018-05-13 23:36:42

标签: ocaml

新的Ocaml所以提出一个非常基本的问题。

如果我有类型为type foobar = foo * bar且类型为foobar的变量a。是否可以通过方法获得foo的值?除了模式匹配还有其他方法吗?此外,在这种情况下,您将如何应用模式匹配?由于声明的类型未声明为type foobar = | Foobar of foo * bar

1 个答案:

答案 0 :(得分: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    

有一个函数(不是方法)fst返回一对的第一个元素。

# fst x;;
- : int = 3

但是,fst的定义必然使用模式匹配:

let fst (a, b) = a

在此定义中,构造(a, b)是匹配一对的模式。

模式匹配是OCaml的重要组成部分,而不仅仅是一个奇特的可选功能。

相关问题